SSISで障害が発生した後に続行するにはどうすればよいですか


12

次のようなものを実装したい: ここに画像の説明を入力してください

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

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

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

私が試したものには、「MaximumErrorCount」の混乱が含まれます。

回答:


12

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

しかし、私は別のことをしました。そして、Jamie Thomson が使用する前に接続を検証することは、ここで役に立ちました。私がやったことは次のとおりです。

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

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

また、テスト接続タスクから出てくる矢印を変更して、式を評価します。評価されます:

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

それぞれ。

また、「Update LastMonitored」タスクに入る複数の制約を忘れずに編集する必要がありました。論理的な「OR」を使用するように変更しました。

SSISパッケージは次のようになります。 新しいパッケージ


1

簡単な方法...

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

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

お役に立てれば。

優先順位制約の使用


優先順位の制約は、意図的に「成功」​​に設定されました。それに、それを「完了」に変更しても、私が尋ねた質問や私が苦労していたタスクに対処しません。「接続のテスト」が失敗した場合でも、パッケージの実行は停止します。
マイケルJスワット

非常に多くのページを読んで、最終的にこの答えを見つけました!ありがとう!
alexkovelsky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.