Ssis 如何处理数据流任务上的空查询结果?
我在Foreach循环中使用数据流迭代了几年,但是有些年份不会返回任何数据,因此SSIS包失败,有没有办法处理这个问题?告诉包忽略这些空白并继续执行Ssis 如何处理数据流任务上的空查询结果?,ssis,bids,dataflowtask,Ssis,Bids,Dataflowtask,我在Foreach循环中使用数据流迭代了几年,但是有些年份不会返回任何数据,因此SSIS包失败,有没有办法处理这个问题?告诉包忽略这些空白并继续执行 谢谢,如果查询返回0行,我不确定为什么数据流会失败。一种可能的解决方案是查询有效年份的数据,并且只迭代有效年份。这可以通过以下方式实现: 在ForEach循环容器之前创建一个executesql任务 将执行SQL任务的结果集设置为整行 将“结果集”选项卡设置为对象变量 将ForEach循环容器设置为ForEach ADO枚举器 将ADO对象源变量设
谢谢,如果查询返回0行,我不确定为什么数据流会失败。一种可能的解决方案是查询有效年份的数据,并且只迭代有效年份。这可以通过以下方式实现:
你能查看软件包上的代码并发布吗?我很高兴看到我是否可以复制您遇到的问题,并为您提供一个更直接满足您发布需求的解决方案。如果您不想涉及数据如何传递到
Foreach
组件,可以采用一种方法:
Foreach
容器中包含一个额外的Execute SQL Task
组件,该组件首先检查是否有任何数据要处理@cntproced
求值操作
设置为表达式和约束
,值
设置为成功
,表达式
设置为@cntproced!=0
这一切的作用是:在foreach组件/容器内部,它将首先检查是否存在要处理的数据。这就是附加组件将要做的,如果有数据要使用,它将转到数据流组件。否则,
“每个”
(或者更确切地说,..这一个循环)将结束,Foreach
将移动到下一个。您将向Foreach循环传递什么,Foreach循环中有什么?请在您的帖子中添加更多详细信息。。它将帮助加载..我是foreach循环的传递和对象变量,在foreach循环中我有一个在查询中使用该变量的数据流任务(ole db源和目标),它们的变量(使用foreach的变量)工作正常,但例如,如果查询使用没有数据的年份(变量),则任务失败。我想处理那些不返回数据的情况,即如果查询类似于“Select*from sysobjects where=?”,并且没有当年的数据,那么它就失败了