我在 Foreach 循环中使用数据流迭代了几年,但是有些年份不会返回任何数据,因此它们的 SSIS 包失败,有没有办法处理这个问题?告诉包忽略那些空白并继续执行?
谢谢,
我在 Foreach 循环中使用数据流迭代了几年,但是有些年份不会返回任何数据,因此它们的 SSIS 包失败,有没有办法处理这个问题?告诉包忽略那些空白并继续执行?
谢谢,
如果您不想接触数据是如何传递给Foreach
组件的,则可以采取一种方法:
您可以在容器中包含一个附加Execute SQL Task
组件,该组件Foreach
首先检查是否有任何数据要处理。
创建一个变量,您的 SQL 任务会将记录计数设置为该变量,例如@cntProceed
将此组件设置为在您的 Dataflow 任务之前运行。
修改优先约束(从 SQL 任务到 Dataflow 任务的绿色箭头)。将evaluation operation
to Expression and Constraint
、Value
toSuccess
和Expression
to设置为@cntProceed != 0
这一切的作用:在 foreach 组件/容器中,它将首先检查是否存在任何可使用的数据。这就是附加组件要做的事情,如果有数据要使用,它将进入数据流组件。否则,那个"each"
(或者更确切地说......那个循环)将结束并且Foreach
将移动到下一个循环。
如果查询返回 0 行,我不确定为什么数据流会失败。一种可能的解决方案是询问有效年份的数据,并且只遍历有效年份。这可以通过以下方式完成:
您可以查看包装上的代码并发布吗?我很高兴看到我是否可以复制您遇到的问题并为您提供更直接满足您发布的需求的解决方案。