2

ETL操作を実行する多くのパッケージ実行タスクを呼び出すSSISパッケージがあります

定義された回数再試行するようにパッケージ実行タスクを構成する方法はありますか (現在、子パッケージ内のタスクの 1 つが失敗すると、パッケージ実行タスクは失敗します。これが発生した場合、タスクを希望します親パッケージをあきらめて失敗する前に再試行する必要があります)

私が知っている 1 つの解決策は、データベース内の各パッケージにフラグを設定し、成功時に定義済みの値に設定し、フラグが成功するか、事前定義された再試行回数を超えるまで for ループ コンテナー内の各パッケージを呼び出すことです。

これを行うためのよりクリーンな、またはより一般的な方法はありますか?

4

1 に答える 1

5

はい、入れExecute Package TaskますFor Loop Container。カウントを行う変数を定義します。1 つは successrun インジケーター用で、1 つは MAX_COUNT コンスタンスです。パッケージ タスク - 式のプロパティで、定義します。

FailPackageOnFailure - False

タスクの実行後、Script Task読み取り/書き込み Vars: SuccessfulRun、スクリプト:

Dts.Variables["SuccessfulRun"].Value = 1

For ループのプロパティ:

InitExpression - @Val_Counter = 0
EvalExpression - @Counter < @MAX_COUNT && @SuccessfulRun == 0
AssingExpression - @Val_Counter = @Val_Counter + 1

Success 行を使用して PackageTask と ScriptTask を接続します。

また

For Loop Container定義式で

MaximumErrorCount - Const_MAX_COUNT

しかし、これはまだ私によってテストされていません...

于 2013-07-19T08:02:12.493 に答える