2013-10-08 64 views
0

我有幾個幾乎相同的包。只有在不同數據庫版本中添加/刪除的列不同。當我複製包並修改副本的數據流時,我刪除OLE DB數據源並添加一個新的。一旦新的定義,其預覽顯示我所期望的。但是,列來自已刪除的OLE DB源。這就像它被緩存在某處。數據源在刪除後保留模式並添加

好像我需要關閉軟件包並在刪除數據源後重新打開它。有沒有其他的方法來清除這個緩存的狀態?內部發生了什麼事情導致這種情況發生?

更多...它看起來像是參數化連接管理器,它保留了之前的參數,直到封裝被關閉並重新打開。

回答

1

如果我理解你的工作流程,你就是複製和粘貼包,然後調整數據流中的源定義。挑戰在於一個系統中的CustomerID是varchar(7),在另一個系統中定義爲varchar(12)。 「訣竅」變成讓設計引擎識別元數據更改並相應地執行操作。

我平常的破解是從根本上改變了源頭。我發現使用查詢SELECT 1 as foo是訣竅。這樣做後,OLE DB源組件的元數據將刪除對滲透到下游組件的現有列的​​所有引用。然後,我切換回正確的源代碼,然後雙擊第一個紅色的X,使其將ID從舊映射到新映射。

如果您需要比內戰手術更多的腦手術途徑,請更改您的信息源中的列名稱,以查找任何應該註冊元數據更改的內容。因此,SELECT T.MyColumn, T.IsFine FROM dbo.MyTable AS T變爲SELECT T.MyColumnX, T.IsFine FROM dbo.MyTable AS T現在,只有第一列在整個數據流中都變爲kiboshed。將它重置回「右側」列名稱,一切正常。

在內部,我不知道,但永遠不會阻止我猜測。驗證關閉後,SSIS引擎識別出數據類型仍然兼容,因此它不會更改現有的元數據。一個不再存在的列就足以讓它坐起來並留意,所以緩存的大小就會消失。

有些人喜歡嘗試使用高級屬性來改變尺寸,但是我發現使用上面的方法比改變尺寸更好,只是讓設計師拍我的手,並且不允許我提出的更改。

+0

它實際上顯示不在當前表中但存在於原始中的列。令人迷惑的是,Preview顯示了正確的模式。 – Metaphor

+0

我喜歡這個解決方案。簡單而有效。 – Metaphor

相關問題