Foreachループ内のDataflowで数年間繰り返していますが、データを返さない年がいくつかあるため、SSISパッケージが失敗します。これを処理する方法はありますか?それらの空白を無視して実行を続けるようにパッケージに指示するには?
ありがとう、
Foreachループ内のDataflowで数年間繰り返していますが、データを返さない年がいくつかあるため、SSISパッケージが失敗します。これを処理する方法はありますか?それらの空白を無視して実行を続けるようにパッケージに指示するには?
ありがとう、
Foreach
データがコンポーネントに渡される方法に触れたくない場合に使用できる1つのアプローチは次のとおりです。
処理するデータがあるかどうかを最初にチェックする追加のExecute SQL Task
コンポーネントをコンテナー内に含めることができます。Foreach
たとえば、SQLタスクがレコード数を設定する変数を作成します@cntProceed
このコンポーネントをDataflowタスクの前に実行するように設定します。
優先順位の制約を変更します(SQLタスクからDataflowタスクへの緑色の矢印)。、、、およびに設定evaluation operation
しますExpression and Constraint
Value
Success
Expression
@cntProceed != 0
これがすべて行うこと:foreachコンポーネント/コンテナー内で、処理するデータが存在するかどうかを最初にチェックします。これが追加コンポーネントが行うことであり、使用するデータがある場合は、データフローコンポーネントに進みます。それ以外の場合、それ"each"
(またはむしろ..その1つのループ)は終了し、は次のループForeach
に移動します。
クエリが0行を返した場合にデータフローが失敗する理由がわかりません。考えられる解決策の1つは、有効な年のデータを調べて、有効な年だけを繰り返すことです。これは次の方法で実行できます。
パッケージのコードを表示して投稿できますか?私はあなたが経験している問題を再現し、あなたの投稿されたニーズをより直接的に満たす解決策をあなたに与えることができるかどうか見てうれしいです。