SSIS チェックポイントは、For ループまたは Foreach ループ コンテナー項目には適用されません
この記事は、SQL Server Integration Services (SSIS) チェックポイントが For Loop
または Foreach Loop
コンテナー項目に対して受け入れられない問題を回避するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 2624458
現象
以下のシナリオについて考えてみます。
コンピューターに Microsoft SQL Server Integration Services をインストールします。
シーケンス コンテナーの後に続く For ループ コンテナー項目を含む SSIS パッケージを作成します。
For ループ コンテナーとシーケンス コンテナー項目の両方に、次のいずれかが含まれます。
- SQL 実行タスク (OR)
- 並列で実行される 2 つ以上の SQL 実行タスク。
SSIS パッケージのチェックポイント設定を有効にします。
SSIS パッケージを実行する
For ループ コンテナーが完了し、パッケージの実行がシーケンス コンテナーに移動します。
次のいずれかのアクションを実行します。
- 単一の SQL 実行タスクを持つパッケージの場合は、タスクの実行中にパッケージの実行を停止します。
- 複数の SQL 実行タスクを実行しているパッケージの場合は、パッケージの実行を停止するか、他の SQL 実行タスクが実行されている間にいずれかのタスクでエラーが発生します
SSIS パッケージが再び実行されます。
このシナリオでは、パッケージは Sequence
コンテナーではなく、For Loop
コンテナーから開始されます。
Note
この問題は、SQL 実行タスクには関連付けされていません。 これは、他のタスクでも発生する可能性があります。
原因
この動作は仕様です。 チェックポイント データは、 For Loop
コンテナーおよび Foreach Loop
コンテナー項目に対して保存されません。 ループ内の子コンテナーが正常に実行された場合、チェックポイント ファイルには記録されません。 そのため、パッケージが再起動されると、これらの各コンテナー項目のタスクが再度実行されます。
回避策
この問題を回避するには、 For Loop
または Foreach Loop
コンテナーを Sequence
コンテナー内にラップします。