Ssis

元數據頭痛

  • January 26, 2015

我無法控制的一個過程是每晚在 MySQL 數據庫中刪除和重新創建表。如果它每次都以相同的方式重新創建表,這將不是問題(我認為)。但事實並非如此:每天早上我進來打開我的 SSIS 項目,我在隨機表/列中收到新的元數據驗證錯誤/警告,因為這個隔夜過程正在創建varchar長度根據數據而變化的列,所以昨天我有一個長度為 90 的列,今天同一張表中的同一列現在長度為 208,明天可能是一個不同的故事……或者不是。

這個 MySQL 數據庫是我的主要數據源 - 我在 SQL Server 上有我的暫存數據庫,並且通過連結伺服器連接,我使用 SSIS 從這些表中選擇數據並進入 SQL Server 表(添加了一些列),其中在用遠端數據填充它們之前,我會截斷它們(因此此暫存數據庫中的元數據是固定的)。

為什麼 SSIS 需要驗證外部元數據?如果我關閉設計時驗證,它會說它延遲到執行時 - 這是否意味著我只會將問題從設計時推到執行時,並且仍然得到一個失敗的包?

我有一個 T-SQL 腳本,它可以執行從 MySQL 到 SQL Server 臨時表的數據傳輸,但是該腳本執行大約 45 分鐘,而 SSIS 包(當所有元數據都是最新的)執行大約 5分鐘 - 不用說,我更喜歡找到一種方法讓 SSIS 停止抱怨過時的元數據,而不是使用該腳本。

有沒有辦法在 SSIS 中使用這個數據源的變形器保持我的理智?

在那種不愉快的情況下,我認為最好的策略是將其與 SSIS 分開。要麼將其移至具有更改視圖的連結伺服器,要麼使用其他一些 etl 工具(如 powershell 腳本)將其從跳舞模式中移出到具有固定模式的表中。如果您有任何歷史記錄,您應該能夠猜出該欄位的上限大小的合理值。您總是可以將其設為 varchar(max)。我假設 MySql 正在執行“選擇”來創建表。在任何情況下,MySql 都沒有對數據做出任何可靠的斷言,所以在 SSIS 滿意之前你需要自己做這件事。

引用自:https://dba.stackexchange.com/questions/89933