Microsoft では、Microsoft SQL Server 2008 Service Pack 1 (SP1) または Microsoft SQL Server 2008 R2 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、各新しいリリースには、以前の SQL Server 2008 SP1 または SQL Server 2008 R2 更新プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ更新プログラムが含まれています。
現象
たとえば次のようなシナリオを考えてみます。
- コンピューターに Microsoft SQL Server 2008 Integration Services (SSIS 2008) または Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2) をインストールします。
- 2 つの For Loop コンテナー項目を含む SSIS パッケージを作成します。
- 2 つの For Loop コンテナ項目に対して 2 つの For Loop コンテナースコープ変数を作成します。 変数の名前は同じです。
- InitExpression、EvalExpression、および AssignExpression プロパティの変数は、2 つの For Loop コンテナー項目に使用します。
- 2 つの For Loop コンテナー項目には、並列で実行される複数の実行 SQL タスク項目が含まれています。
- SSIS パッケージのチェックポイント設定を有効にします。
- SSIS パッケージを実行します。
- SSIS パッケージの実行中に、いずれかの SQL タスクの実行項目が失敗または停止します。
- SSIS パッケージが再び実行されます。
このシナリオでは、失敗または停止しなかった SQL タスクの実行項目の 1 つの変数値が正しくありません。
注: この SQL タスクの実行アイテムは、失敗または停止していない For Loop コンテナー アイテムにあります。
たとえば、次のような特定のシナリオを考えてみましょう。
- 2 つの For Loop コンテナー項目を含む SSIS パッケージを作成します。 アイテムには FLC01 および FLC02 という名前が付けられています。
- FLC01 用の BatchNo 変数と FLC02 用の BatchNo 変数を作成します。
- InitExpression プロパティを @[User::BatchNo] = 0 に設定します。
- EvalExpression プロパティを @[User::BatchNo] < 10 に設定します。
- AssignExpression プロパティを @[User::BatchNo]=@[User::BatchNo]+1 に設定します。
- 2 つの For Loop コンテナー項目には、並列実行プランを使用する複数の実行 SQL タスク項目が含まれています。
- SSIS パッケージのチェックポイント設定を有効にします。
- SSIS パッケージを実行します。
- FLC01 の 1 つの SQL タスクの実行アイテムが失敗または停止します。
- SSIS パッケージが再び実行されます。
このシナリオでは、FLC02 の SQL タスクの実行項目の 1 つの BatchNo 値が正しくありません。
注: この問題は、Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2) でも発生します。
原因
この問題は、Checkpoint 変数の復元ロジックに欠陥があるために発生します。
チェックポイント変数が間違ったタスクに復元される。 したがって、正しくない変数値が復元されます。
解決策
累積的な更新プログラムの情報
SQL Server 2008 R2
この問題の修正プログラムは、累積的な更新プログラム 11 で最初にリリースされました。 SQL Server 2008 R2 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2633145 SQL Server 2008 R2 の累積的な更新プログラム パッケージ 11 (注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
981356 SQL Server 2008 R2 のリリース以降にリリースされた SQL Server 2008 R2 のビルド
SQL Server 2008 R2 Service Pack 1
この問題の修正プログラムは、SQL Server 2008 R2 Service Pack 1 の累積的な更新プログラム 4 で最初にリリースされました。 この累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2633146 SQL Server 2008 R2 Service Pack 1 の累積的な更新プログラム パッケージ 4 注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 Service Pack 1 以降にリリースされた SQL Server 2008 R2 のビルド
SQL Server 2008 Service Pack 2
この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積的な更新プログラム 7 で最初にリリースされました。 この累積的な更新プログラム パッケージの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。
2617148 SQL Server 2008 Service Pack 2 の累積的な更新プログラム パッケージ 7 注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2402659 SQL Server 2008 Service Pack 2 SQL Server以降にリリースされた SQL Server 2008 ビルドは、特定の SQL Server Service Pack 用に作成されます。 SQL Server 2008 Service Pack 2 のインストールには、SQL Server 2008 Service Pack 2 修正プログラムを適用する必要があります。 既定では、1 つの SQL Server Service Pack で提供されているすべての修正プログラムは、次の SQL Server Service Pack に含まれています。
SQL Server 2008 SP1 の累積的な更新プログラム パッケージ 16
この問題の修正プログラムは、SQL Server 2008 SP1 の累積的な更新プログラム パッケージ 16 で最初にリリースされました。 SQL Server 2008 SP1 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
2582282 SQL Server 2008 Service Pack 1 の累積的な更新プログラム パッケージ 16 注: ビルドは累積的であるため、新しい更新プログラム リリースには、以前の SQL Server 2008 SP1 更新プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ更新プログラムが含まれています。 この修正プログラムを含む最新の更新プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
970365 SQL Server 2008 Service Pack 1 以降にリリースされた SQL Server 2008 ビルド
回避策
この問題を回避するには、For Loop コンテナー項目ごとに異なる変数名を使用します。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。