パッケージでのチェックポイントの使用
更新 : 2007 年 9 月 15 日
SQL Server 2005 Integration Services (SSIS) では、失敗したパッケージ全体を再実行する代わりに、失敗した時点から再開することができます。パッケージがチェックポイントを使用するように設定されている場合、パッケージの実行に関する情報がチェックポイント ファイルに書き込まれます。失敗したパッケージを再実行する場合、チェックポイント ファイルを使用して、失敗した時点からパッケージを再開します。パッケージの実行が成功するとチェックポイント ファイルは削除され、次にパッケージが実行されるときに再度作成されます。
パッケージでチェックポイントを使用すると、次の利点があります。
- 大きなファイルのダウンロードおよびアップロードの繰り返しを防止します。たとえば、FTP タスクを使用して複数の大きなファイルをダウンロードするパッケージで 1 つのファイルのダウンロードが失敗した場合、パッケージを再開して、そのファイルのみをダウンロードすることができます。
- 大量データ読み込みの繰り返しを防止します。たとえば、ディメンションごとに別々の一括挿入タスクを使用してデータ ウェアハウスのディメンション テーブルに一括挿入を行うパッケージで 1 つのディメンション テーブルに対する挿入が失敗した場合、パッケージを再開して、そのディメンションのみを再読み込みすることができます。
- 値の集計の繰り返しを防止します。たとえば、平均や合計など多くの集計値の計算を集計ごとに別々のデータ フロー タスクを使用して実行するパッケージで 1 つの集計値の計算が失敗した場合、パッケージを再開して、その集計のみを再実行することができます。
パッケージがチェックポイントを使用するように設定されている場合、Integration Services はチェックポイント ファイルから再開ポイントを取得します。失敗したコンテナの種類や、トランザクションなどの実装機能によって、チェックポイント ファイルに記録される再開ポイントは影響を受けます。変数の現在の値も、チェックポイント ファイルにキャプチャされます。ただし、Object データ型を持つ変数の値は、チェックポイント ファイルに保存されません。
再開ポイントの定義
単一のタスクがカプセル化されているタスク ホスト コンテナが、再開可能な最小のアトミック作業単位です。Foreach ループ コンテナおよびトランザクション化されたコンテナも、アトミックな作業単位です。
トランザクション化されたコンテナの実行中にパッケージが停止した場合、トランザクションが終了し、コンテナによって実行された作業がすべてロールバックされます。パッケージが再開されると、失敗したコンテナが再実行されます。トランザクション化されたコンテナのいずれかの子コンテナが完了しても、チェックポイント ファイルには記録されません。このため、パッケージが再開されると、トランザクション化されたコンテナと子コンテナが再実行されます。
メモ : |
---|
チェックポイントとトランザクションを同じパッケージで使用すると、予期しない結果が生じる可能性があります。たとえば、失敗したパッケージをチェックポイントから再開した場合、既に正常にコミットされたトランザクションが繰り返される場合があります。 |
パッケージが再開されると、Foreach ループ コンテナとその子コンテナが再実行されます。ループ内の子コンテナの実行が成功してもチェックポイント ファイルには記録されないため、子コンテナは再実行されます。
パッケージの再開時にはパッケージの構成が再読み込みされず、チェックポイント ファイルに書き込まれた構成情報が代わりに使用されます。これによって、確実に、パッケージが失敗した時点と同じ構成を使用してパッケージが再実行されます。
パッケージは、制御フロー レベルでのみ再開できます。データ フローの途中からパッケージを再開することはできません。データ フロー全体の再実行を防止するには、パッケージを複数のデータ フローで設計して、各データ フローで別々のデータ フロー タスクを使用するようにします。これによりパッケージを再開すると、1 つのデータ フロー タスクだけを再実行できます。
パッケージを再開する設定
チェックポイント ファイルには、完了したすべてのコンテナの実行結果、システム変数およびユーザー定義変数の現在の値、およびパッケージの構成情報が記録されています。また、パッケージ固有の識別子も記録されています。パッケージを正常に再開するには、チェックポイント ファイルに記録されたパッケージの識別子とパッケージが一致しなければなりません。一致しない場合、再開は失敗します。これにより、パッケージの別のバージョンで作成されたチェックポイント ファイルの使用を防止します。パッケージの再開後に実行が成功すると、チェックポイント ファイルは削除されます。
次の表に、チェックポイントの実装時に設定するパッケージのプロパティの一覧を示します。
プロパティ | 説明 |
---|---|
CheckpointFileName |
チェックポイント ファイルの名前を指定します。 |
CheckpointUsage |
チェックポイントを使用するかどうかを指定します。 |
SaveCheckpoints |
パッケージでチェックポイントを保存するかどうかを示します。失敗した時点からパッケージを再開するには、このプロパティを True に設定する必要があります。 |
また、パッケージ内のコンテナのうち、再開ポイントとして使用するすべてのコンテナの FailPackageOnFailure プロパティを true に設定する必要があります。
ForceExecutionResult プロパティを使用して、パッケージのチェックポイントの使用をテストできます。タスクまたはコンテナの ForceExecutionResult を Failure に設定すると、実行時の障害を擬似的に実現できます。パッケージを再実行すると、失敗したタスクとコンテナが再実行されます。
チェックポイントの使用法
CheckpointUsage プロパティは次の値に設定できます。
値 | 説明 |
---|---|
Never |
チェックポイント ファイルを使用せず、パッケージのワークフローの最初からパッケージを実行することを指定します。 |
Always |
チェックポイント ファイルを常に使用し、前の実行で失敗した時点からパッケージを再開することを指定します。チェックポイント ファイルが見つからない場合、パッケージは失敗します。 |
IfExists |
チェックポイント ファイルが存在する場合、チェックポイント ファイルを使用することを指定します。チェックポイント ファイルが存在する場合、パッケージは前の実行で失敗した時点から再開されます。存在しない場合、パッケージのワークフローの最初から実行されます。 |
メモ : |
---|
dtexec の /CheckPointing on オプションを使用すると、パッケージの SaveCheckpoints プロパティを True に設定した場合、および CheckpointUsage プロパティを Always に設定した場合と同じ効果が得られます。詳細については、「dtexec ユーティリティ」を参照してください。 |
チェックポイント ファイルのセキュリティ保護
パッケージ レベルの保護にはチェックポイント ファイルの保護が含まれないため、チェックポイント ファイルは個別にセキュリティ保護する必要があります。チェックポイントのデータはファイル システムにしか格納できないので、オペレーティング システムのアクセス制御リスト (ACL) を使用して、ファイルの格納先またはフォルダのセキュリティを保護する必要があります。チェックポイント ファイルには、現在の変数値などパッケージの状態に関する情報が含まれているため、セキュリティで保護することが重要です。たとえば変数には、電話番号などの個人データを含む多数の行で構成されるレコードセットが格納されている場合があります。詳細については、「パッケージで使用するファイルの保護」を参照してください。
チェックポイント プロパティを設定するには
参照
概念
その他の技術情報
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2007 年 9 月 15 日 |
|
2006 年 7 月 17 日 |
|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|