2014-01-14 11 views
0

我有兩個數據庫供兩個不同系統共享一組數據所需的數據(數據流是從一個系統到另一個系統的一種方式)。接收數據的系統使用SSIS包導入它。包含共享數據的表的表結構和列名在兩個數據庫上都相同。如何在SSIS中使用來自OLEDB源的數據運行SQL合併語句

使用SSIS我希望能夠從第一個系統中的表中獲取數據的子集。例如

SELECT ProductId, col2, col3, col4 from Products WHERE modifiedDate > @ThresholdDate 

然後,我想從這個查詢獲取數據,並使用一個SQL MERGE語句取決於產品編號是否匹配在其他數據庫中添加或更新數據。

我在執行SQL任務之前寫過一個合併語句,但這是可能的,因爲兩個數據庫都在同一臺服務器上。我不想使用sp_addlinkedserver,我只想擁有一個獲取數據的OLE DB Source,並將這些數據傳遞給一些SSIS組件,然後可以使用它運行合併語句。

這是可能的還是我需要在運行合併語句之前先將數據存儲在臨時表中?

+0

實際上這個問題似乎很好地描述瞭如何去做:http://stackoverflow.com/questions/15066982/how-can-i-use-merge-statement-across-multiple-database-servers – Neil

回答

0

您可以使用Foreach循環容器來完成此操作,將原始查詢結果放入對象變量中。然後將輸出轉換爲單獨的變量並一次運行合併查詢一行。

但是我會想象你最好的方法來做到這一點將創建一個臨時表,如你所說。將數據傳輸到臨時表,然後從中運行合併。毫無疑問,它會更快。

相關問題