Integration Services のイベント ハンドラ
実行可能ファイル (パッケージ、Foreach ループ コンテナ、For ループ コンテナ、シーケンス コンテナ、およびタスク ホスト コンテナ) は実行時にイベントを発生させます。たとえば、エラーが発生すると、OnError イベントが発生します。これらのイベントに対してカスタム イベント ハンドラを作成し、パッケージ機能を拡張すると、実行時のパッケージを容易に管理できます。イベント ハンドラは、次のタスクを実行できます。
パッケージまたはタスクの実行が完了したとき、一時データ ストレージをクリーンアップします。
システム情報を取得して、パッケージを実行する前にリソースの可用性を評価します。
参照テーブル内の参照が失敗したとき、テーブル内のデータを更新します。
エラーまたは警告が発生したとき、またはタスクが失敗したときに、電子メール メッセージを送信します。
イベントにイベント ハンドラがない場合、パッケージのコンテナ階層で上位にあたる次のコンテナでイベントが発生します。このコンテナにイベント ハンドラがある場合、イベントに応答してイベント ハンドラが実行されます。イベント ハンドラがない場合、コンテナ階層で上位にあたる次のコンテナでイベントが発生します。
次の図は、1 つの SQL 実行タスクを含む For ループ コンテナを持つ、簡単なパッケージを示しています。
OnError イベントに対するイベント ハンドラを持つのは、パッケージのみです。SQL 実行タスクの実行時にエラーが発生した場合、パッケージの OnError イベント ハンドラが実行されます。次の図は、パッケージの OnError イベント ハンドラにより実行される呼び出しの順序を示しています。
イベント ハンドラは、イベント ハンドラ コレクションのメンバであり、このコレクションはすべてのコンテナに含まれています。SSIS デザイナを使用してパッケージを作成すると、イベント ハンドラ コレクションのメンバは、SSIS デザイナの [パッケージ エクスプローラ] タブ上の [イベント ハンドラ] フォルダ内に表示されます。
イベント ハンドラのコンテナは、次の方法で構成できます。
イベント ハンドラの名前と説明を指定します。
イベント ハンドラを実行するかどうか、イベント ハンドラが失敗した場合にパッケージが失敗するかどうか、イベント ハンドラが失敗するまでに発生するエラーの最大数を示します。
実行時にイベント ハンドラが返す実際の実行結果の代わりに、返される実行結果を指定します。
イベント ハンドラのトランザクション オプションを指定します。
イベント ハンドラが使用するログ モードを指定します。
イベント ハンドラの内容
イベント ハンドラの作成方法は、パッケージの構築方法と同様です。つまり、イベント ハンドラには、制御フロー内で順序付けられたタスクとコンテナがあります。また、イベント ハンドラにデータ フローを含めることもできます。SSIS デザイナには [イベント ハンドラ] タブが含まれており、これを使用してカスタム イベント ハンドラを作成します。詳細については、「パッケージのイベント ハンドラの作成」を参照してください。
イベント ハンドラは、プログラムによって作成することもできます。詳細については、「プログラムによるイベントの処理」を参照してください。
実行時イベント
次の表に、Integration Services で用意されているイベント ハンドラの一覧を示します。また、イベント ハンドラによって実行される実行時イベントについて説明します。
イベント ハンドラ |
イベント |
---|---|
OnError |
OnError イベントのイベント ハンドラです。このイベントは、エラー発生時に実行可能ファイルから発生します。 |
OnExecStatusChanged |
OnExecStatusChanged イベントのイベント ハンドラです。このイベントは、実行状態が変化したときに実行可能ファイルから発生します。 |
OnInformation |
OnInformation イベントのイベント ハンドラです。このイベントは、実行可能ファイルの検証時および実行時に、情報をレポートするために発生します。このイベントは情報を伝達するだけのもので、エラーや警告は発生しません。 |
OnPostExecute |
OnPostExecute イベントのイベント ハンドラです。このイベントは、実行可能ファイルの実行完了直後に、実行可能ファイルから発生します。 |
OnPostValidate |
OnPostValidate イベントのイベント ハンドラです。このイベントは、実行可能ファイルの検証が完了したときに、実行可能ファイルから発生します。 |
OnPreExecute |
OnPreExecute イベントのイベント ハンドラです。このイベントは、実行可能ファイルが実行される直前に、実行可能ファイルから発生します。 |
OnPreValidate |
OnPreValidate イベントのイベント ハンドラです。このイベントは、実行可能ファイルの検証を開始するときに、実行可能ファイルから発生します。 |
OnProgress |
OnProgress イベントのイベント ハンドラです。このイベントは、実行可能ファイルで重要な進行があったときに、実行可能ファイルから発生します。 |
OnQueryCancel |
OnQueryCancel イベントのイベント ハンドラです。このイベントは、実行可能ファイルの実行を停止するかどうかを決定するために、実行可能ファイルから発生します。 |
OnTaskFailed |
OnTaskFailed イベントのイベント ハンドラです。このイベントは、タスクが失敗したときにタスクから発生します。 |
OnVariableValueChanged |
OnVariableValueChanged イベントのイベント ハンドラです。このイベントは、変数の値が変化したときに実行可能ファイルから発生します。イベントは、変数が定義されている実行可能ファイルで発生します。変数の RaiseChangeEvent プロパティが False に設定されている場合、このイベントは発生しません。詳細については、「Integration Services の変数」を参照してください。 |
OnWarning |
OnWarning イベントのイベント ハンドラです。このイベントは、警告の発生時に実行可能ファイルから発生します。 |
イベント ハンドラの構成
プロパティを設定するには、Business Intelligence Development Studio の [プロパティ] ウィンドウで行うか、またはプログラムによって設定します。
これらのプロパティを Business Intelligence Development Studio で設定する方法の詳細については、「タスクまたはコンテナのプロパティを設定する方法」を参照してください。
プログラムによるイベント ハンドラの構成
プログラムによってこれらのプロパティを設定する方法の詳細については、「DtsEventHandler」を参照してください。
|