web-dev-qa-db-ja.com

SSISで障害が発生した後、続行する方法

次のようなものを実装したい: enter image description here

このパッケージでは、接続マネージャーの設定を動的に変更して、データベース名のリストをループ処理します。

ただし、「テスト接続」での最初の失敗は停止し、パッケージの実行が失敗します。

しかし、私はForeachループを継続したいと思います。私はこれが可能であるべきだという感覚を得ます(そうでなければ、これらの赤い失敗矢印の使用例は何ですか?)

私が試したことには、 "MaximumErrorCount"をいじることも含まれます。

13
Michael J Swart

私が尋ねたように質問に答えるために、タスクとその親コン​​テナーのMaximumErrorCountがゼロであることを確認することにより、失敗後に続行することができます...この場合は、「接続のテスト」タスク、「foreach」コンテナーを意味しますそしてパッケージ自体。

でも結局違うことをした。そして、Jamie Thomsonの 使用する前に接続を確認する は、ここで役に立ちました。これが私がしたことです:

テスト接続タスクをスクリプトタスクに置き換えました。スクリプトタスクは、Jamieのスクリプトとほぼ同じでしたが、

  • すべてではなく、1つの接続マネージャのみを使用し、
  • タスクの結果は常に成功でした
  • そして、新しい変数 "User :: ConnectionSucceeded"を接続テストの結果に設定しました。

テスト接続タスクから出てくる矢印も式を評価するように変更しました。

  • @ [User :: ConnectionSucceed] == True
  • @ [User :: ConnectionSucceed] == False

それぞれ。

また、「LastMonitoredの更新」タスクに入る複数の制約を編集することも忘れてはなりませんでした。論理的な「OR」を使用するように変更しました。

これが私のSSISパッケージの外観です。 new package

12
Michael J Swart

簡単な方法...

「接続のテスト」タスクの後に優先順位制約(緑色の線)をダブルクリックします。 「制約オプション」が表示されたら、ドロップダウンリスト「値」をクリックして、「完了」を選択します。これは、失敗したかどうかに関係なく、タスクが完了した後もパッケージの実行を継続するように指示します。

注:タスクの完了後に評価される式を追加する場合を除き、ドロップダウンリストの[評価操作]を[制約]から変更しないでください。また、制約を「論理AND」のままにします。

お役に立てれば。

Using the precedence constraint

1
A Eneyo