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



我有一个MS SQL数据库与3固有的表。一个通用的叫做"Tools",还有两个更具体的叫做"DieCastTool"one_answers"Deburrer"。

我的任务是从旧的MS Access"数据库"中获取数据。我的问题是,我必须做很多搜索和过滤的东西,直到我有我的数据,我想导入到新的数据库。最后,我不想重复这些步骤,而是同时填充这3个表。因此,我使用的是Dataflowtarget,其中我没有选择某个表,而是使用sql选择语句(在id列上进行内部连接)来接收3个表的所有字段。然后我匹配这些列,在我看来应该可以。只要我只选择要填充的"工具"表的列,它就会这样做。当添加子表的列时,不幸的是它没有返回ErrorCode -1071607685 => "No status is available"

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

    SSIS根本无法处理SQL表中的继承,并将它们视为单独的表。(也许SSIS甚至不能处理在一个Dataflowtarget元素中填充多个表?)
  1. 我使用SSIS的方式不对。

如果有人能确认/拒绝原因1,那就太好了,因为我没有找到任何关于这个话题的东西。

是的,SSIS不知道表关系。可以这样想:SSIS只感知物理对象,而不是你的逻辑模型。

我不明白你是怎么得到那个错误的。无论如何,以下是解决方案:
  1. 如果这些表之间没有FK约束,您可以在一个数据流中使用一个源组件,一个组播和3个目的地
  2. 如果有FK约束并且您可以禁用它们,则使用执行SQL Task禁用(或删除)约束,添加相同的约束数据流如1。并添加另一个Execute SQL Task来启用(或创建)约束
  3. 如果有FK约束,你不能禁用它们,你可以使用一个数据流读取所有数据并将其传递给后续的数据流逐表填写。看到SSIS在控制流任务之间传递数据源

最新更新