我有一个SSIS包,我正在处理ForEach
循环中的一些文件。 在循环中,我有一个处理数据流的任务。我已经通过将回路的maxerror count
设置为0
来确保即使存在错误的文件,循环也不会停止。我尝试使用ON ERROR
循环容器的事件处理程序上的脚本任务在消息框中捕获错误。我得到三个,而不是一个错误。 Popagate
在数据流的OnPostExecute
事件中设置为false
。 请帮忙。循环(SSIS)中的循环错误
主要包 - 循环任务 - 数据流任务
我有一个SSIS包,我正在处理ForEach
循环中的一些文件。 在循环中,我有一个处理数据流的任务。我已经通过将回路的maxerror count
设置为0
来确保即使存在错误的文件,循环也不会停止。我尝试使用ON ERROR
循环容器的事件处理程序上的脚本任务在消息框中捕获错误。我得到三个,而不是一个错误。 Popagate
在数据流的OnPostExecute
事件中设置为false
。 请帮忙。循环(SSIS)中的循环错误
主要包 - 循环任务 - 数据流任务
你所得到的script task
为on Error
事件处理1个或多个错误的原因是因为在容器中的子控件内的任何错误的情况下,该事件从Data Flow task
提高到其furthr在propogate
变量设置为false
不会在这种情况下进行工作的高达更多package level
的ForEach
,因为你在它的子组件设置为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循环内的一个组成部分,我建议你请使用以下方法
MaxErrorCount
属性的foreach循环
为DFT
创建event handler
。将propogate
变量设置为False
并写上面的代码来检查错误的数量。
我一般倾向于使用的,而不是设置MaxErrorCount
第二个方法,因为这给了我更多的灵活性来处理单个组件级别的错误
有关详情,请this MSDN链接这就解释了在SSIS是如何工作的事件处理程序
谢谢你的解决方案。第二种方法按预期工作。 – Akshay 2013-03-06 08:17:49
你能展示你的包装设计吗? – praveen 2013-03-05 08:55:50
Praveen。请检查截图。虽然在我的浏览器中显示不正确。控制流,数据流和循环的事件处理程序。只是一个脚本任务来说明错误。派生列如果发生错误,则填充错误3次。 – Akshay 2013-03-05 10:10:36