2010-12-02 58 views
0

我有2個SQL Server。 ServerA和ServerB上SSIS - 傳輸後更新源記錄

他們都有一個名爲 「OrderRequest」

服務器A表 「內部」 和ServerB是在我們的數據中心。

服務器A有一個鏈接的服務器 - 服務器B ServerB上有一個鏈接服務器回服務器A

我需要刪除後鏈接的服務器,因爲它允許服務器B「看到」服務器A正在改變防火牆和將不會再允許這個。

我們有一個SSIS包,從我們的數據中心(服務器B)到我們的內部服務器(服務器)

目前拷貝數據,SQL語句是沿着線:

SELECT * 
FROM ServerB.OrderRequest 
WHERE 
OrderID NOT In (SELECT OrderID FROM ServerA.OrderRequest) 

正如你所看到的,這將需要服務器B,以便能夠「看到」服務器A

我想要做的是一樣的東西:

SELECT * 
FROM ServerB.OrderRequest 
WHERE 
Transferred = 0 

這很容易做到。然而,在我的SSIS中,我有一個聯盟(因爲我有多個WebDB) 然後,它們被插入到ServerA中。

我需要做的事情是,設置成功時插入成功。 我會如何去做這件事?

回答

1

顯然有很多方法可以做到這一點,但它取決於幾個因素(例如,你將更多的記錄到服務器B,你正在做轉移?)

  • 做一個多播到帶有OLE DB命令的foreach容器 。在ServerB上的每個記錄上調用 更新。
  • 在您選擇之前開始交易。選擇完成後,更新所有要傳輸的行(如果您想要更多的原子性,請選擇一個臨時表以確保您正確更新)。一旦完成:提交。失敗:回滾。
  • 只需完成運行SQL命令:update ServerB.OrderRequest SET轉= 1,其中轉移= 0
+0

感謝,經過一些google搜索,我想的foreach容器是前進的方向......任何想法如何去做吧?我已經在這個主題上添加了另一個Q - http://stackoverflow.com/questions/4614518/ssis-using-a-foreach-loop-container-to-update-records-after-transfer – Alex 2011-01-07 12:43:29