【问题标题】:SSIS - Control error logs sent to SSIS catalogSSIS - 控制错误日志发送到 SSIS 目录
【发布时间】:2019-02-06 14:03:24
【问题描述】:

我在 SSIS 中有一个包,它有一个 foreach 循环容器,它在失败后重试特定数据流 3 次。

每次失败都会记录在 SSIS 目录中,但在这种情况下,我只想在第三次失败时记录错误。是否可以在 SSIS 中专门控制此错误日志?

我有这个包被一个主包调用,并且只要子包中至少有一个失败,执行的最终状态就是“失败”。实际上,我只希望它在 foreach 第三次失败时在主包和/或子包中显示“失败”。

【问题讨论】:

    标签: sql-server logging ssis etl


    【解决方案1】:

    您将需要一个执行 SQL 任务来计算错误数,并将计数放入一个变量中。然后使用连接到下一步的变量来检查变量的值是否为 3 或更高。

    【讨论】:

    【解决方案2】:

    尝试按照以下步骤操作:

    1. 首先,将 Foreach 循环容器 (在属性选项卡中)ForceExecutionResult 设置为 Success
    2. 然后,你应该添加一个Int类型的变量*(例如:@[User::counter],初始值等于0
    3. Data flow Task 之后添加Expression Task - 带有失败 优先约束 - 使用以下表达式:

      @[User::counter] = @[User::counter] + 1
      
    4. 在 Foreach 循环容器之后添加一个脚本任务,在脚本内部检查@[User::counter] 是否等于3,如果是,则抛出异常或使用Dts.Events.FireError() 方法。

    【讨论】:

    • For 循环容器不是问题。因为即使不强制执行结果成功,它也总是这样。 for 循环容器永远不会失败,因为我已将数据流的事件处理程序设置为不传播错误。因此,即使数据流组件失败,for each container 也不会失败,ssis 上仍然会记录数据流的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2011-08-11
    相关资源
    最近更新 更多