【问题标题】:Execute SQL task (SSIS) and then insert the result set into a table on a different server执行 SQL 任务 (SSIS),然后将结果集插入到不同服务器上的表中
【发布时间】:2016-11-30 21:17:34
【问题描述】:

这是一个比较笼统的问题:

我在一个文件夹中有 file1.sql、file2.sql、file3.sql。我可以运行一个 foreach 容器来遍历文件并执行它,但我需要将结果集转到位于不同服务器上的各个表

file1 结果集 --> Server2.TableA file2 结果集 --> Server2.TableB .. 等

如何通过 SSIS 技术实现这一点?

【问题讨论】:

  • SSIS 不能那样工作。执行 SQL 任务的结果无法发送到目标。您正在寻找数据流任务,但正如我所说的 over here,这些任务必须在设计时绑定。
  • 我认为这可以做到,但我们需要更多信息。你可以回答吗?您正在循环 .sql 文件并在其中执行 sql? .sql 是选择查询吗?你有一个 ForEach 循环,里面有一个执行 SQL 任务?不使用数据流?你可以张贴你的循环的图片吗?您提到了不同的服务器,但您的示例显示了不同的表,相同的服务器。我们需要澄清一下。这可以通过变量来完成。

标签: sql sql-server ssis transformation bids


【解决方案1】:

您可以使用 foreach 循环中的脚本任务来执行此操作,该任务分析结果集并将其插入到适当的目标表中。

【讨论】:

    【解决方案2】:

    您还可以将所有记录放入一台服务器上的临时表中,并为该服务器提供额外的列,以及一个 isprocesssed 位字段。

    此时您可以对数据进行任何所需的清理。

    然后为每个服务器创建一个单独的数据流,以获取该服务器的未处理记录。发送后,将记录标记为已处理。

    如果您只有几台服务器,这将有效。如果有很多可能性,或者您预计数字会继续变化,我会接受@TabAlleman 的建议。

    【讨论】:

      【解决方案3】:

      thestralFeather,

      如果您是 SSIS 新手,请参阅 msdn 的关于利用 SSIS 循环的教程here。如果您查看教程中的this 页面,您将在数据流中看到输出目的地。 @Tab Allerman 和 @HLGEM 提供了很好的建议。当您查看我向您推荐的页面时,只需通过 2 个单独的循环将数据拖放到您可以在目标数据流中管理的单个位置。

      【讨论】:

        猜你喜欢
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多