すべての制御フロー要素に OnPostExecute イベント ハンドラーがありますが、パッケージ レベルに OnError ハンドラーを配置するとすぐに、タスク レベルのハンドラーが表示されなくなります。これは既知のバグですか、それとも私が間違っていることですか。
3 に答える
これは、各パッケージ タスクで OnPostExecute イベント ハンドラーが作成されるためです。パッケージ レベルは、すべてのタスクの OnPosteExecute イベントを示します。
見えないってどういうこと?イベント ハンドラーの下に太字で表示されているのは、パッケージの OnError だけということですか?
その場合でも心配はいりません。パッケージの OnPostExecute イベントはすべてまだ存在しています。トリックは、[イベント ハンドラー] をクリックしたときのカーソルのフォーカスがパッケージ上にあることです。特定の実行可能ファイルに関連付けられているイベント ハンドラーを確認するには、[制御フロー] をクリックして戻り、特定の実行可能ファイルをクリックしてから、[イベント ハンドラー] をクリックします。より簡単な方法は、実行可能セレクタ バーを使用してドリルダウンすることです。
SQL 実行タスクで OnPostExecute イベントを定義していたので、それをクリックして [OK] を選択しました。
その実行可能ファイルのイベントが表示されるようになりました
何かを見つけようとしてさまざまな実行可能ファイルをクリックすることに時間を費やしたくない場合は、この点で [パッケージ エクスプローラー] タブが非常に役立ちます。
ここでは、パッケージ レベルで定義した OnError イベントに加えて、SQL 実行タスクに 2 つのイベント ハンドラーを定義したことがすぐにわかります。1 つは OnPostExecute 用で、もう 1 つは OnError 用です。
最後に、操作の順序について簡単に説明します。制御フロー要素とパッケージ レベルで定義された OnError イベント ハンドラーのシナリオと、制御フロー要素での OnPostExecute イベントを考えると、SQL 実行タスクがエラー (0 による除算) を発生させると、次のことがわかります。
- 「SQL タスクの実行」の OnError イベントが発生する
- 「so_EventHandlerRajiv」(パッケージ)のOnErrorイベントが発火
- 「SQL タスクの実行」の OnPostExecute イベントが発生する
そのため、OnPostExecute の前に OnError が発生し、特定のイベント ハンドラーの 1 つが発生し始めると、リッスンしているすべてのハンドラーに浸透します。
おそらく、各制御フロータスクのプロパティをクリックする代わりに、パッケージエクスプローラーを使用して、定義されたすべてのイベントハンドラーを表示できます。マリオ http://msdn.microsoft.com/en-us/library/ms190114.aspx