さまざまな環境 (DEV、UAT、PROD) のすべてのサーバーをループするパッケージを作成します。サービス アカウントを使用します。DEV と UAT 用に 1 つのサービス アカウントがあり、PROD 用に別のサービス アカウントがあります。ForEach ループ コンテナー/変数を使用して接続文字列を設定しています。
問題: ループ内のデータ フローが PROD サーバーに接続しようとすると、明らかに PROD にアクセスできない DEV/UAT サービス アカウントを使用しているため、接続に失敗します。問題は、これがループを殺すことです。通常は、データ フローにイベント ハンドラーを配置し、イベント ハンドラーのシステム変数 Propagate:OnError = False を設定して、エラーがループに到達して強制終了しないようにします。データ フロー内の OLE DB 接続が検証中 (パッケージの実行中) に失敗し、明らかに Propagate = False 設定は、タスクの実行中にエラーが発生した場合にのみエラーが発生するのを防ぎます。タスクの検証。
パッケージ自体を含むすべてに MaximumErrorCount = 0 を設定できますが、これは少し手間がかかり、どのようなエラーが発生しても、パッケージは常に正常に実行されたと報告されます。
SQL Server 2008-R2 の実行
誰かが慣れていない場合は、伝播設定を使用してループを強制終了しない方法に関する記事へのリンク。