Sql-Server
如何在 SSIS 中獲取 OUTPUT $action、Inserted.、Deleted. 記錄
我只是想知道,
MERGE
在 T-SQL 中,您可以輸出OUTPUT $action
,Inserted.*
和Deleted.*
記錄。我想問一下如何在SSIS中獲得OUTPUT $action
,,,記錄?Inserted.*``Deleted.*
你不能,ish,是簡短的回答。
您在可以修改數據的數據流任務中有 3 個 ish 組件。OLE DB/ADO.NET 目標、OLE DB 命令和腳本組件。
我忽略了這個答案的腳本組件,因為它是組件的瑞士軍刀。如果您想做的事情足夠糟糕,腳本組件將允許您這樣做。用微型鋸切紅杉樹是否現實是另一回事。
OLE DB Destination 就是那個目的地。它不會將行推出,它只會消耗它們。是的,從技術上講,它可以推送行,但這只是通過錯誤輸出路徑,這仍然無法解決訪問 OUTPUT 虛擬表的問題。
OLE DB 命令聽起來很有希望。它可以為您的數據流添加額外的列。big, BIG, BIG的缺點是它不是基於集合的組件。它將在流經的每一行上執行。如果有數十、數百甚至數千行,這種單例行為可能不會殺死您的系統。
MERGE
十萬以上的數據可能會導致您度過一段糟糕的時光。如果您對這種方法死心塌地,認識到MERGE的失敗,使其成為 SSISey 的方法將是擁有兩個數據流組件。
第一個將所有數據寫入目標表。使用現有的 DF 並將所有數據寫入新表。
第二個是新的數據流,它使用您的 MERGE 語句以及根據需要定向的隨附虛擬表。我談到了一個刪除第一個模式,它在那個 SO 問題上使用了 OUTPUT 表,所以 MERGE 應該沒有什麼不同。