是否可以使用SSIS同时为多个表填充继承?

时间:2011-11-30 11:47:37

标签: sql-server inheritance ssis sql-server-2008-r2

我有一个带有3个固有表的MS SQL数据库。一个名为“工具”的通用名称和两个更具体的“DieCastTool”和“Deburrer”。

我的任务是从旧的MS Access“数据库”中获取数据。我的问题是,我必须做很多搜索和过滤工作,直到我得到了我想要导入新数据库的数据。所以最后我不想多次执行这些步骤,而是同时填充3个表。 因此我使用da Dataflowtarget,其中我没有选择某个表,而是使用sql select语句(在id列上具有内部联接)来接收3个表的所有字段。然后我匹配列,在我看来它应该工作。只要我只选择要填充的“工具”表的列,它就会这样做。添加子表的列时,遗憾的是它没有,并返回ErrorCode -1071607685 => “没有状态可用”

我可以想到我的解决方案不起作用的两个原因:

  1. SSIS根本无法处理SQL表中的继承,并将它们视为单独的表。 (也许SSIS甚至无法处理在一个Dataflowtarget元素中填充多个表?)
  2. 我以错误的方式使用SSIS。
  3. 如果有人可以确认/拒绝原因1会很好,因为我没有找到关于这个主题的任何内容。

1 个答案:

答案 0 :(得分:0)

是的,SSIS不了解表关系。可以把它想象成:SSIS只知道物理对象,而不是你的逻辑模型。

我不明白你是怎么得到这个错误的。无论如何,这里有解决方案:

  1. 如果这些表之间没有FK约束,您可以在一个数据流中使用一个源组件,一个多播和3个目标
  2. 如果有FK约束,您可以禁用它们,然后使用 执行SQL任务以禁用(或删除)约束,添加相同的约束 数据流如1.并添加另一个执行SQL任务以启用(或 创造)约束
  3. 如果有FK约束并且您无法禁用它们,则可以使用 一个数据流来读取所有数据并将其传递给后续数据流 按表填写表格。看到 SSIS Pass Datasource Between Control Flow Tasks