script task
foron Error
イベント ハンドラーで 1 つ以上のエラーが発生する理由は、コンテナーの子コントロール内でエラーが発生した場合、イベントが から に発生Data Flow task
し、それがForEach
さらに に運ばれるためですpackage level
。この場合、子コンポーネントの設定に設定しているため、機能しません。propogate
false
MaximumErrorCount
0 overrides
propogate
通常、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 つしかない場合は、以下のいずれかの方法を使用することをお勧めします
MaxErrorCount
ForEach ループのプロパティ
event handler
のDFT
.Setpropogate
変数を作成しFalse
、上記のコードを記述してエラーの数を確認します。
私は通常、Setting の代わりに 2 番目の方法を使用する傾向があります。MaxErrorCount
これにより、個々のコンポーネント レベルのエラーをより柔軟に処理できるからです。
詳細については、SSIS のイベント ハンドラーがどのように機能するかを説明しているこのMSDN リンクを確認してください。