复杂的SSIS删除场景

时间:2013-04-25 21:21:05

标签: ssis

我在不同的服务器上有两个数据库。两个数据库都有相同的模式。我们需要将数据从一个数据库移动到另一个数据库,这样如果记录只存在于目标上,那么它应该被删除。我有以下场景要在SSIS中解决。

成分表包含食谱的成分,每个食谱属于“包装。

Package --> Recipe --> Ingredient 

包装是最高级别,然后是配方,然后是配料。我们逐包移动数据。 SSIS包已经到位,它将PackageId和Move所有食谱和成分移动到目标数据库。 Target数据库中没有Package表,因为我们使用它来打包数据以进行数据移动。现在情景是,

  1. 我们正在移动PackageId = 1
  2. 的包
  3. 假设包1有两个食谱,这些食谱已经存在于源和目的地但是目的地的食谱有更多的成分,例如源包1具有RecipeA和RecipeB。这两个食谱已经存在于Destination上。但Destination RecipeB有更多的成分。我需要删除那些额外的成分。
  4. 我无法使用执行SQL任务,因为源和目标数据库位于不同的服务器上。任何人都可以建议如何在数据流中完成这项工作?

    以下设计浮现在脑海中。

    1. 在SOURce上查找包XYZ中存在的所有RecipeId。
    2. 将它与Same Recipes进行比较,找出哪些成分仅存在于destionation中。

      源数据库

      成分表

      Id名称RecipeId

      食谱表

      RecipeId名称PackageId

      套餐表   PackageId名称

      *目标数据库* *

      成分表   Id名称RecipeId

      食谱表   RecipeId Name BundleId

1 个答案:

答案 0 :(得分:0)

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

我希望它有所帮助。