2013-04-25 61 views
1

我有兩個數據庫在不同的服務器上。兩個數據庫都具有相同的模式。我們需要將數據從一個數據庫移動到另一個數據庫,以便如果記錄僅存在於目標上,那麼它應該被刪除。我有以下方案在SSIS中解決。複雜SSIS刪除方案

成分表保存對配方成分和每個配方屬於「包。

Package --> Recipe --> Ingredient 

包隨即頂層配方,然後成分,我們的包裝。SSIS包移動數據套餐已經在地方,採取包標識,並將所有食譜和配料到目標數據庫。有一個在目標數據庫中沒有包表,因爲我們用這個打包的數據移動的數據。現在的情況是,

  1. 我們正在包,其中包標識= 1
  2. 假設包裝1有兩個配方,並且這些配方已經存在於來源和目的地但是目的地的配方有更多配料,例如源包1具有RecipeA和RecipeB。這兩個食譜已經存在於目的地。但Destination RecipeB有更多的權限。我需要刪除那些額外的成分。

我無法使用執行SQL任務作爲源和目標數據庫位於不同的服務器上。任何人都可以建議如何做到這一點在數據流?

下面的設計浮現在腦海。

  1. 查找SOURCE中Package XYZ中存在的所有RecipeId。
  2. 將它與Same Recipes進行比較,找出哪些成分僅在destionation上存在。

    源數據庫

    成分表

    ID名稱RecipeId

    配方表

    RecipeId名稱包標識

    封裝表 包標識名稱

    *目標數據庫* *

    成分表 ID名稱RecipeId

    配方表 RecipeId名稱BundleId

回答

0

您可以做的是在目標服務器中創建一個臨時基礎,您將在其中複製信息而不查找引用,之後您可以直接在同一臺服務器上執行比較。

我希望它有幫助。