2012-07-30 87 views

回答

2

它們同樣命名爲轉換,但用途各不相同。目標就是它聽起來像 - 它是數據流的終點。您無法將任何內容連接到OLE DB目標的輸出(超出錯誤流程)。目的地有能力執行集合基於插入(這對於良好性能非常重要)。它也可以執行單例插入(爲每個行發出一條插入語句,用於),這會導致流向目標的吞吐量較低。

將該行爲與OLE DB命令進行對比。這是一個轉換組件,它允許您爲流過數據流的每一行執行任何操作。這是一把瑞士軍刀SQL「執行者」。你可以使用它作爲INSERT語句,但最常見的是我將它看作UPDATE目標。對於小數據集,這很好。使用OLE DB命令轉換的成本是成本。它將爲流經數據集的每一行發佈單例語句。就事務日誌,交易時間,計劃緩存以及其他一些我無法想象的事情而言,這將會代價高昂。沒有辦法告訴SQL Server對這些操作進行批處理,因此您將被縮減爲通過激動行(RBAR)發佈語句行。

如果您需要在SSIS中執行更新,您可以通過將更新寫入臨時表並在數據流完成後執行基於集的更新來獲得更好的性能配置文件。 Andy Leonard在他的Stairway to Integration Services series上有一系列討論這種模式的文章。

參考

1

一個OLE目的地爲刀片更好的選擇,因爲它允許數據的批量加載到目標表。

一個OLE DB命令(我認爲是你的意思是OLE命令任務)將逐行執行它的操作,這是慢得多的。雖然,OLE DB命令可以處理更新並刪除哪個OLE目標不能使用