For 循环或 Foreach 循环容器项不支持 SSIS 检查点

本文可帮助你解决以下问题:SQL Server Integration Services (SSIS) 检查点不适用于For LoopForeach Loop容器项。

原始产品版本:SQL Server
原始 KB 编号: 2624458

症状

请考虑以下情况:

  • 在计算机上安装 Microsoft SQL Server Integration Services。

  • 创建一个 SSIS 包,其中包含后跟序列容器的 For 循环容器项。

  • For 循环容器和序列容器项都具有以下任一项:

    • 执行 SQL 任务 (或)
    • 并行运行的两个或多个执行 SQL 任务 () 。
  • 为 SSIS 包启用检查点设置。

  • 运行 SSIS 包

  • For 循环容器完成,包执行将归到序列容器。

  • 执行以下操作之一:

    • 对于具有单个执行 SQL 任务的包,可以在任务仍在运行时停止包执行。
    • 对于运行多个执行 SQL 任务的包,要么停止包执行,要么在其中一个任务中遇到失败,而其他执行 SQL 任务 () 仍在运行
  • SSIS 包再次运行。

在此方案中,包从 For Loop 容器而不是 Sequence 容器开始。

注意

此问题与执行 SQL 任务无关。 其他任务也可能发生这种情况。

原因

此行为是设计使然。 不会为 For Loop 容器和 Foreach Loop 容器项保存检查点数据。 如果循环中的子容器成功运行,则不会将其记录在检查点文件中。 因此,当重新启动包时,将再次执行其中每个容器项中的任务。

解决方法

若要解决此问题,请将 或 容器包装For Loop在容器内SequenceForeach Loop