2013-04-25 64 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

您可以做的是在目标服务器中创建一个临时基础,您将在其中复制信息而不查找引用,之后您可以直接在同一台服务器上执行比较。

我希望它有帮助。