SSIS Checkpoints are not honored for For Loop or Foreach Loop container items
This article helps you work around the problem where SQL Server Integration Services (SSIS) Checkpoints are not honored for For Loop
or Foreach Loop
container items.
Original product version: SQL Server
Original KB number: 2624458
Symptoms
Consider the following scenario:
You install Microsoft SQL Server Integration Services on a computer.
You create an SSIS package that contains a For Loop Container item that is followed by a Sequence Container.
Both the For Loop Container and the Sequence Container items have either of the following:
- An Execute SQL Task (OR)
- Two or more Execute SQL Task (s) that run in parallel.
You enable the Checkpoint setting for the SSIS package.
You run the SSIS package
The For Loop Container completes and package execution comes to the Sequence Container.
You take one of the actions below:
- For packages having a single Execute SQL Task, you stop the package execution while the task is still running.
- For packages running multiple Execute SQL Tasks, you either stop the package execution or you experience a failure in one of those tasks while other Execute SQL task (s) are still running
The SSIS package runs again.
In this scenario, Package starts from For Loop
Container instead of the Sequence
Container.
Note
This issue is not tied to Execute SQL Task. This may occur with other tasks as well.
Cause
This behavior is by design. The checkpoint data is not saved for the For Loop
Container and Foreach Loop
container items. If a child container in the loop runs successfully, it is not recorded in the checkpoint file. So, when the package is restarted, the tasks in each of these container items are executed again.
Workaround
To work around the issue, wrap the For Loop
or the Foreach Loop
container inside a Sequence
Container.