是否应该在数据流中向其发送0行时调用脚本组件?

时间:2013-02-17 18:08:47

标签: sql-server ssis

我遇到了一个非常奇怪的情况,我一直在使用SSIS包。

我有一个foreach循环,其中包含一个数据流任务,该任务对循环之前填充的记录集对象中的每个记录执行。

在数据流任务中,我有一个ADO.NET源,一个查找,最后一个目标脚本组件。脚本组件在 PreExecute 中初始化数据表,从输入中添加每一行,post将数据表作为表值参数发送到存储过程。查找任务设置为仅将不匹配的行发送到脚本组件。

奇怪的情况是,我发现当查找中的所有行都匹配时,脚本组件仍在执行,并且发送了0行。这导致存储过程中出错,因为当脚本组件收到超过0行时,我只期望它被调用。我已经通过首先检查实际传入的数据来纠正存储过程中的问题。

在其他软件包中,我有非常类似的情况,在查找传入0条记录之后设置了目标脚本组件,并且没有看到这种情况发生在那里 - 唯一的区别是它们不在foreach循环中。

所以,我真的想知道,为了将来的参考,如果它是一个SSIS脚本组件的预期行为,它会在传入0行时执行吗?

1 个答案:

答案 0 :(得分:1)

PreExecute PostExecute 方法即使没有行从以下方法重定向也会执行< em> Lookup Transformation 输出到数据流任务中配置为 Script Component 组件的 Destination

  • 查找匹配输出
  • 查找无匹配输出

确保您认为与不工作的包不同的包以相同的方式配置。