Sql-Server

將 NULL 傳遞給 SSIS 變數

  • November 20, 2016

我正在建構一個包來使用配置表中的參數執行一個過程。

我已經建構了兩個執行 SQL 任務框。一種是從配置表中填充 SSIS 變數。第二個使用這些變數執行過程。

我正面臨以下行為。整數變數的預設值為 0,字元串為空字元串。即使在從配置表中獲取 NULL 之後,這些變數也會保持它們的值。

如何更改此行為以將 NULL 的 SQL Server 邏輯應用為預設“值”,或者僅啟用它們從配置表中獲取的 NULL 以覆蓋其預設值?

SSIS 不支持可空類型,因為它是內置變數。所以 - 正如您所經歷的 - SQL 中的空整數在分配為 SSIS 變數時將變為零。這些是休息時間,但有一些解決方法。

為了保持我們的源表為 NULL,我們需要完全跳過整個“將它們分配給 SSIS 變數”。看看OLE DB 命令。它類似於 Execute SQL 命令,不同之處在於它在數據流級別上執行。它執行通過它的每行執行一個 SQL 命令。這樣做的好處是您永遠不必將 SQL 結果集映射到 SSIS 變數。SELECT TOP 1 * FROM MyConfigTable在數據流內部工作是 SQL 輸出和 SQL 輸入。我們可以通過將 a 傳遞給OLE DB 命令來完全避免整個“不可為空”的頭痛。在 OLE DB 命令組件中,您可以將 ResultSet 列分配給 SP 參數。

我知道這是一個變化,但我確實認為從兩個連續執行 SQL 任務轉移到包含 OLE DB 命令組件的數據流是您想要的。其他任何事情都會涉及腳本任務。祝你好運!

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