2013-10-02 56 views
0

我有一個表,它存儲從源數據庫中刪除的行的列表,以便可以在目標數據庫中鏡像此刪除。我有一個數據流設置,其中包含以下項目的此列表:動態SQL與SSIS OLE DB命令

表名|主鍵名稱|主鍵值

有關本表中的每一行,我要對我的目標數據庫,它看起來像這樣執行SQL語句:

DELETE FROM ? WHERE ? = ?

我添加了一個OLE DB命令與此作爲命令文本,但是,當我去映射「可用目標列」時,沒有列出。什麼解決方法可用?

回答

0

我建議你使用一個變量並使用表達式來動態構建SQL,然後使用該變量作爲OLE DB命令的源。

+0

我需要這個以每行爲基礎運行。一個變量表達式是否支持這個? – NickHeidke

+1

如果您將行集加載到對象類型的SSIS變量中,然後使用For-Each任務遍歷對象中的每一行(ADO.Net數據集),那麼是的,這樣可以正常工作。以下是一個示例:http://pldineshtech.blogspot.com.au/2012/08/loop-through-each-row-in-table-using.html。它突出了可能的設計缺陷,即RBAR。例如,此方法的替代方法是將更改日誌加載到目標中的表中,然後執行批量更新/插入操作。這將會更快,但可能更棘手。 –

+0

只有一列中的所有主鍵?允許組合主鍵可能會很棘手。 –

0

我認爲對於這樣的事情,使用Script Component執行操作會更好。 OLD DB Command不會處理動態表格部分。