script taskforon Errorイベント ハンドラーで 1 つ以上のエラーが発生する理由は、コンテナーの子コントロール内でエラーが発生した場合、イベントが から に発生Data Flow taskし、それがForEachさらに に運ばれるためですpackage level。この場合、子コンポーネントの設定に設定しているため、機能しません。propogatefalseMaximumErrorCount0 overridespropogate
通常、DFT のイベント ハンドラーのスクリプト タスクで1 つのErrorCount変数を作成しようとします。カウントを確認します。type int
if (int.Parse(Dts.Variables["User::ErrorCount"].Value.ToString ()) == 0)
{
Dts.Variables["User::ErrorCnt"].Value = 1;
//Do your logging operation or any operation
}
したがって、このようにして初めてイベント ハンドラーが起動され、変数ErrorCountが 1 に設定されるため、DFT の後続のエラーはスクリプト タスク内の IF 条件に失敗します。
ForEach ループ内にコンポーネントが 1 つしかない場合は、以下のいずれかの方法を使用することをお勧めします
MaxErrorCountForEach ループのプロパティ
event handlerのDFT.Setpropogate変数を作成しFalse、上記のコードを記述してエラーの数を確認します。
私は通常、Setting の代わりに 2 番目の方法を使用する傾向があります。MaxErrorCountこれにより、個々のコンポーネント レベルのエラーをより柔軟に処理できるからです。
詳細については、SSIS のイベント ハンドラーがどのように機能するかを説明しているこのMSDN リンクを確認してください。