チェックポイントの使用による、失敗したパッケージの再開
Integration Services では、失敗したパッケージ全体を再実行する代わりに、失敗した時点から再開することができます。パッケージがチェックポイントを使用するように設定されている場合、パッケージの実行に関する情報がチェックポイント ファイルに書き込まれます。失敗したパッケージを再実行する場合、チェックポイント ファイルを使用して、失敗した時点からパッケージを再開します。パッケージの実行が成功するとチェックポイント ファイルは削除され、次にパッケージが実行されるときに再度作成されます。
パッケージでチェックポイントを使用すると、次の利点があります。
大きなファイルのダウンロードおよびアップロードの繰り返しを防止します。たとえば、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 ユーティリティ (SSIS ツール)」を参照してください。 |
チェックポイント ファイルのセキュリティ保護
パッケージ レベルの保護にはチェックポイント ファイルの保護が含まれないため、チェックポイント ファイルは個別にセキュリティ保護する必要があります。チェックポイントのデータはファイル システムにしか格納できないので、オペレーティング システムのアクセス制御リスト (ACL) を使用して、ファイルの格納先またはフォルダーのセキュリティを保護する必要があります。チェックポイント ファイルには、現在の変数値などパッケージの状態に関する情報が含まれているため、セキュリティで保護することが重要です。たとえば変数には、電話番号などの個人データを含む多数の行で構成されるレコードセットが格納されている場合があります。詳細については、「パッケージで使用するファイルへのアクセスの制御」を参照してください。
チェックポイント プロパティを設定するには
外部リソース
- social.technet.microsoft.com の技術資料「フェールオーバーまたはエラー後の SSIS パッケージの自動再起動」
|