1

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

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

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

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

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

所以,我真的很想知道,以供将来参考,如果它是一个 SSIS 脚本组件的预期行为,它将在传入 0 行的情况下执行?

4

1 回答 1

1

PreExecutePostExecute即使没有从以下输出重定向到配置为Data Flow Task中的组件的,方法也会执行。Lookup TransformationScript ComponentDestination

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

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

于 2013-02-17T19:27:12.703 回答