2013-10-24 11 views
5

あなたの助けのための成功をForceExecutionResultへと洞察力が大幅に私は祖父母コンテナSSIS祖父母コンテナ

これは私が私のパッケージには、現在設定されている方法であるために=成功をForceExecutionResultする必要がSSISで

を高く評価している方法:
親パッケージ=
子パッケージ= B

- パッケージ実行タスク
からBをコール - Bは、特定の電子で失敗した場合エラーコードB再実行B

スクリプトタスクを使用してAのExecute PackageタスクでOnErrorイベントハンドラを使用してBを再試行します。思考の私の方法に


- Aのパッケージ実行タスクのonErrorイベントハンドラは、スクリプトタスクの親コンテナ
される - Aのパッケージ実行タスクは、私が=成功をForceExecutionResultにはどうすればよいスクリプトタスクの祖父母コンテナ

ですBリトライが成功したときに、親のコンテナ(AのExecute Package Task)?

Bの再試行が成功した場合でも、Aのパッケージ実行タスクでは、最初のB試行で発生したエラーの結果として赤=失敗が表示されます。

スクリプトタスク内でC#またはVBを使用してこれを行う方法を探しています。私はSSIS 2008を使用しています

おかげ

+0

私はいくつかのフラグやものを設定するために外部テーブルが必要になると思います。私は、そのdoableしかしちょうど少し面倒なことを意味します。特定のエラーの後にBを開始しようとしているので、パッケージは、2番目(または3番目またはN番目の実行)の間に、1番目の実行のステータスとエラーコードを参照する必要があります。お役に立てれば。 – rvphx

答えて

1

主なアドバイスを読み取るためOnErrorイベントの後、パッケージBを再実行することではありません。あなたはBを呼び出し、パッケージAを失敗させず、パッケージBの結果を評価し、何をすべきかを決める必要があります。

  1. For Loopコンテナを作成し、それが設定された回数(while i < 5 doのように実行する、の=最大番号)のために実行します。

  2. Execute Packageを設定すると、エラーの際に親パッケージとパッケージ全体が失敗することがありません。

  3. Script Taskで実行コードを評価し、成功/失敗条件でFor Loopコンテナを終了してください。 (i = 5に設定するなど)。

おそらくあなたは、C#Script TaskからパッケージBを実行することができます - それを行うにはどのようにオブジェクトモデルを確認してください。私は方法を見つけたら私の答えを更新します。

+0

あなたのソリューションに感謝します。私はそれが実行可能であると信じています。私の特別なケース(100以上の子パッケージ呼び出し)では、私が怠け者であるため、実装することを選択するとは思わないでしょう。スクリプトタスク内でC#またはVBでこれを行う方法が見つからないので、私はあなたの答えを受け入れています。 –

関連する問題