2010-12-02 108 views
2

我想弄清楚接近以下情況的最佳方法。SSIS數據流更新

概述

帳款在一天的課程,並存儲在一個表(SQL服務器)。在每天結束時,這些付款將被導出並插入到另一個數據庫(Oracle)中。成功插入到Oracle數據庫中的付款將使用時間戳進行更新。

過程

步驟1 - 每個支付記錄具有對Oracle數據庫進行匹配,以確保由所述付款記錄稱爲一個值在Oracle數據庫中存在。滿足這一步驟的支付將沿着管道向下移動。

第2步 - 將付款插入到Oracle數據庫中,並將任何插入錯誤重定向到記錄集。

方法

我使用的是OLEDB數據源的款項(SQL服務器)和查找值(甲骨文),然後使用是Merge Join(左外),追加數據到支付。從合併連接的結果中使用條件拆分,我將與查找數據匹配的付款傳遞到OLEDB目的地。

我需要更新原始付款表,只有付款才能完成付款。使用條件拆分,我可以確定哪些行在步驟1中不匹配,並在最終插入的錯誤輸出上重定向行,我可以確定哪些行在那裏失敗。但是,我沒有看到確定已成功插入的付款的最佳方式以及更新原始表的最佳方式。

回答

1

我可能會插入成功付款記錄的ID列表到原始數據庫的臨時表(使用多播+ OLE DB目標),然後運行存儲過程或使用SQL查詢任務來更新原始表基於臨時表中的值。然後,您可以在完成後截斷或刪除臨時表。

+0

是的。基於集合的方法是要走的路。我想知道是否可以將失敗的插入與其他多播流合併,並刪除失敗,以便它們永遠不會插入臨時表中。 – 2011-02-04 08:58:27