【问题标题】:SSIS Multicast - Wait for one fork to finish before executing next forkSSIS 多播 - 在执行下一个分叉之前等待一个分叉完成
【发布时间】:2009-02-06 21:06:15
【问题描述】:

我有一个 SSIS 多播对象,它将我的流分成 2 条路径。

在第一个路径中,我将流插入另一个数据库。

在第二个路径中,我更新了流的行以显示它们已被插入。

我需要一种方法让一条路径等到另一条路径完成。 (所以我可以处理任何插入错误,而不是更新那些错误的行。)

感谢任何帮助。

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    我对此进行了更多研究,这是我想出的答案:

    在多播的每个输出上,我都进行了排序操作,然后使用 MergeJoin 操作将它们连接起来。之后,我使用 OLE DB 命令对没有来自 mergejoin 的错误值的项目执行 SQL 更新。

    【讨论】:

    • 正是我需要的!我试图使用合并所有来解决这个问题,但它没有用。我有 2 个 SCD,我希望在一个完成后执行一个。通过执行多任务、2 次排序、合并连接以及之后的另一次排序以删除重复项来解决此问题。
    • 您能详细介绍一下这个主题吗?我是 SSIS 管理的新手,我也有类似的问题。
    • 如果可能的话,您能否添加更多上下文来说明为什么它可以与视觉效果一起使用?我有同样的问题,我正在尝试解决,但这里的答案对我来说不是很清楚。
    • @ItalianStallion4215 - 不幸的是,这个答案已有十多年的历史了。我不记得这是用于 SSIS 项目的。我似乎记得也许我使用第一个分支的输出将合并连接到第二个分支。由于第一个分支的输出是输入到第二个分支的,所以第二个分支必须等待第一个分支完成。
    【解决方案2】:

    如果您大致知道完成一个 fork 需要多长时间,您可以在第二个 fork 上使用 OLE DB 命令。输入“waitfor delay '00:00:15'”,让服务器等待 15 秒再进行下一步。

    【讨论】:

    • 请删除帖子中的空格。
    【解决方案3】:

    你不能在 SSIS 中这样做。您只能在控制流级别强制执行优先约束(即强制执行运行顺序)。

    【讨论】:

      【解决方案4】:

      在这种情况下,我不会使用多播,而是使用常规数据流,这样在第一个成功完成之前不会启动

      【讨论】:

        【解决方案5】:

        最好的选择是实际使用脚本组件。从那里您可以管理使用 try catch 块按顺序执行插入和更新。

        【讨论】:

          猜你喜欢
          • 2020-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-15
          • 1970-01-01
          • 1970-01-01
          • 2020-05-25
          • 1970-01-01
          相关资源
          最近更新 更多