我有一个 SSIS 包,我在其中ForEach
循环处理一些文件。在循环中,我有一个执行处理的数据流任务。我已通过将maxerror count
循环的 设置为0
. 我尝试使用ON ERROR
循环容器的事件处理程序上的脚本任务在消息框中捕获错误。我没有得到一个错误,而是得到三个。
Popagate
设置为false
数据流的OnPostExecute
事件。请帮忙。
主包——循环任务——数据流任务
我有一个 SSIS 包,我在其中ForEach
循环处理一些文件。在循环中,我有一个执行处理的数据流任务。我已通过将maxerror count
循环的 设置为0
. 我尝试使用ON ERROR
循环容器的事件处理程序上的脚本任务在消息框中捕获错误。我没有得到一个错误,而是得到三个。
Popagate
设置为false
数据流的OnPostExecute
事件。请帮忙。
主包——循环任务——数据流任务
您在script task
for事件处理程序中收到 1 个或多个错误的原因on Error
是,如果容器的子控件内部出现任何错误,事件Data Flow task
会从在这种情况下不起作用,因为您在其子组件中设置了任何设置。ForEach
package level
propogate
false
MaximumErrorCount
0 overrides
propogate
通常,我尝试在脚本任务中为 DFT 的事件处理程序创建一个ErrorCount
变量,我检查计数type int
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 循环的属性
event handler
为DFT
.Setpropogate
变量创建一个False
并编写上述代码以检查错误数。
我通常倾向于使用第二种方法而不是设置MaxErrorCount
,因为这使我能够更灵活地处理单个组件级别的错误
有关更多详细信息,请查看此MSDN 链接,该链接解释了 SSIS 中的事件处理程序是如何工作的