0

我有一个 SSIS 包,我在其中ForEach循环处理一些文件。在循环中,我有一个执行处理的数据流任务。我已通过将maxerror count循环的 设置为0. 我尝试使用ON ERROR循环容器的事件处理程序上的脚本任务在消息框中捕获错误。我没有得到一个错误,而是得到三个。 Popagate设置为false数据流的OnPostExecute事件。请帮忙。

主包——循环任务——数据流任务 在此处输入图像描述

4

1 回答 1

1

您在script taskfor事件处理程序中收到 1 个或多个错误的原因on Error是,如果容器的子控件内部出现任何错误,事件Data Flow task会从在这种情况下不起作用,因为您在其子组件中设置了任何设置。ForEachpackage levelpropogatefalseMaximumErrorCount0 overridespropogate

通常,我尝试在脚本任务中为 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 循环中只有一个组件,我建议您使用以下任一方法

  1. MaxErrorCountForEach 循环的属性

  2. event handlerDFT.Setpropogate变量创建一个False并编写上述代码以检查错误数。

我通常倾向于使用第二种方法而不是设置MaxErrorCount,因为这使我能够更灵活地处理单个组件级别的错误

有关更多详细信息,请查看MSDN 链接,该链接解释了 SSIS 中的事件处理程序是如何工作的

于 2013-03-05T11:28:51.123 回答