我遇到了一个非常奇怪的情况,我一直在使用SSIS包。
我有一个foreach循环,其中包含一个数据流任务,该任务对循环之前填充的记录集对象中的每个记录执行。
在数据流任务中,我有一个ADO.NET源,一个查找,最后一个目标脚本组件。脚本组件在 PreExecute 中初始化数据表,从输入中添加每一行,post将数据表作为表值参数发送到存储过程。查找任务设置为仅将不匹配的行发送到脚本组件。
奇怪的情况是,我发现当查找中的所有行都匹配时,脚本组件仍在执行,并且发送了0行。这导致存储过程中出错,因为当脚本组件收到超过0行时,我只期望它被调用。我已经通过首先检查实际传入的数据来纠正存储过程中的问题。
在其他软件包中,我有非常类似的情况,在查找传入0条记录之后设置了目标脚本组件,并且没有看到这种情况发生在那里 - 唯一的区别是它们不在foreach循环中。
所以,我真的想知道,为了将来的参考,如果它是一个SSIS脚本组件的预期行为,它会在传入0行时执行吗?
答案 0 :(得分:1)
PreExecute
和 PostExecute
方法即使没有行从以下方法重定向也会执行< em> Lookup Transformation
输出到数据流任务中配置为 Script Component
组件的 Destination
确保您认为与不工作的包不同的包以相同的方式配置。