2013-03-05 99 views
0

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

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

+0

你能展示你的包装设计吗? – praveen 2013-03-05 08:55:50

+0

Praveen。请检查截图。虽然在我的浏览器中显示不正确。控制流,数据流和循环的事件处理程序。只是一个脚本任务来说明错误。派生列如果发生错误,则填充错误3次。 – Akshay 2013-03-05 10:10:36

回答

1

你所得到的script taskon Error事件处理1个或多个错误的原因是因为在容器中的子控件内的任何错误的情况下,该事件从Data Flow task提高到其furthr在propogate变量设置为false不会在这种情况下进行工作的高达更多package levelForEach,因为你在它的子组件设置为0 overrides任何propogate设置MaximumErrorCount

一般来说,我尝试创建的type int一个ErrorCount变量,在对DFT的事件处理程序的脚本任务我检查计数

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

因此,在这样的第一次事件处理程序被触发,它将变量ErrorCount设置为1,以便DFT中的后续错误将使脚本任务中的IF条件失败。

如果你只是有foreach循环内的一个组成部分,我建议你请使用以下方法

  1. MaxErrorCount属性的foreach循环

  2. DFT创建event handler。将propogate变量设置为False并写上面的代码来检查错误的数量。

我一般倾向于使用的,而不是设置MaxErrorCount第二个方法,因为这给了我更多的灵活性来处理单个组件级别的错误

有关详情,请this MSDN链接这就解释了在SSIS是如何工作的事件处理程序

+0

谢谢你的解决方案。第二种方法按预期工作。 – Akshay 2013-03-06 08:17:49