【问题标题】:Recurring errors in Loop ( SSIS )循环中的重复错误 (SSIS)
【发布时间】:2013-03-05 07:41:56
【问题描述】:

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

主包-循环任务-数据流任务

【问题讨论】:

  • 你能展示一下你的包装设计吗?
  • 普拉文。请检查屏幕截图。虽然在我的浏览器中显示不正确。循环的控制流、数据流和事件处理程序。只是一个脚本任务来告诉错误。派生列,如果遇到错误,则填充错误 3 次。

标签: ssis


【解决方案1】:

您在script task for on Error 事件处理程序中出现 1 个或多个错误的原因是,如果容器的子控件内部出现任何错误,事件会从 Data Flow task 引发到 @ 987654325@ 被进一步带到package level。更多将propogate 变量设置为false 在这种情况下将不起作用,因为您设置为0 overridesMaximumErrorCount 在其子组件中的任何propogate 设置.

通常我尝试创建一个type intErrorCount 变量,并在 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 中的事件处理程序是如何工作的

【讨论】:

  • 感谢您的解决方案。第二种方法按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2017-02-11
  • 2013-12-24
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多