我有幾個幾乎相同的包。只有在不同數據庫版本中添加/刪除的列不同。當我複製包並修改副本的數據流時,我刪除OLE DB數據源並添加一個新的。一旦新的定義,其預覽顯示我所期望的。但是,列來自已刪除的OLE DB源。這就像它被緩存在某處。數據源在刪除後保留模式並添加
好像我需要關閉軟件包並在刪除數據源後重新打開它。有沒有其他的方法來清除這個緩存的狀態?內部發生了什麼事情導致這種情況發生?
更多...它看起來像是參數化連接管理器,它保留了之前的參數,直到封裝被關閉並重新打開。
我有幾個幾乎相同的包。只有在不同數據庫版本中添加/刪除的列不同。當我複製包並修改副本的數據流時,我刪除OLE DB數據源並添加一個新的。一旦新的定義,其預覽顯示我所期望的。但是,列來自已刪除的OLE DB源。這就像它被緩存在某處。數據源在刪除後保留模式並添加
好像我需要關閉軟件包並在刪除數據源後重新打開它。有沒有其他的方法來清除這個緩存的狀態?內部發生了什麼事情導致這種情況發生?
更多...它看起來像是參數化連接管理器,它保留了之前的參數,直到封裝被關閉並重新打開。
如果我理解你的工作流程,你就是複製和粘貼包,然後調整數據流中的源定義。挑戰在於一個系統中的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引擎識別出數據類型仍然兼容,因此它不會更改現有的元數據。一個不再存在的列就足以讓它坐起來並留意,所以緩存的大小就會消失。
有些人喜歡嘗試使用高級屬性來改變尺寸,但是我發現使用上面的方法比改變尺寸更好,只是讓設計師拍我的手,並且不允許我提出的更改。
它實際上顯示不在當前表中但存在於原始中的列。令人迷惑的是,Preview顯示了正確的模式。 – Metaphor
我喜歡這個解決方案。簡單而有效。 – Metaphor