循环中的重复错误(SSIS)

时间:2013-03-05 07:41:56

标签: ssis

我有一个SSIS包,我在ForEach循环中处理一些文件。 在循环中,我有一个数据流任务来完成处理。通过将循环的maxerror count设置为0,我确保即使存在错误文件,循环也不会停止。我尝试使用循环容器的ON ERROR事件处理程序上的脚本任务在消息框中捕获错误。我得到三个而不是一个错误。 Popagate在数据流的false事件中设置为OnPostExecute。 请帮忙。

主程序包 - 循环任务 - 数据流任务 enter image description here

1 个答案:

答案 0 :(得分:1)

script task on Error事件处理程序中出现1个或多个错误的原因是因为如果容器的子控件内部出现任何错误,则会从{{{ 1}}到了Data Flow task,而ForEach更多地将package level变量设置为propogate在这种情况下不起作用,因为false您在其子组件中设置为MaximumErrorCount任何0 overrides设置。

通常我尝试创建propogate的{​​{1}}变量,并在DFT的事件处理程序的脚本任务中检查计数

ErrorCount

因此,通过这种方式触发第一次事件处理程序,它将变量type int设置为1,因此DFT中的后续错误将使脚本任务中的IF条件失败。

如果您在ForEach循环中只有一个组件,我建议您使用以下任一方法

    ForEach Loop的
  1. if (int.Parse(Dts.Variables["User::ErrorCount"].Value.ToString ()) == 0) { Dts.Variables["User::ErrorCnt"].Value = 1; //Do your logging operation or any operation } 属性

  2. ErrorCount创建MaxErrorCount。将event handler变量设置为DFT并编写上述代码以检查错误数。

  3. 我通常倾向于使用第二种方法而不是设置propogate,因为这样可以更灵活地处理单个组件级错误

    有关详细信息,请查看this MSDN链接,其中说明了SSIS中的事件处理程序如何工作

相关问题