Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS-发送到SSIS目录的控制错误日志_Sql Server_Logging_Ssis_Etl - Fatal编程技术网

Sql server SSIS-发送到SSIS目录的控制错误日志

Sql server SSIS-发送到SSIS目录的控制错误日志,sql-server,logging,ssis,etl,Sql Server,Logging,Ssis,Etl,我在SSIS中有一个包,它有一个foreach循环容器,在失败后重试一个特定的数据流3次 每个故障都记录在SSIS目录中,但在这种情况下,我只想在第三次出现故障时记录错误。是否可以在SSIS中专门控制此错误日志 我有一个主包调用这个包,只要子包中至少有一个失败,执行的最终状态就是“失败”。实际上,当foreach第三次失败时,我只希望它在主包和/或子包中显示“failed”。您需要一个execute SQL任务来计算错误数,将计数放入一个变量中。然后使用连接到下一步的变量检查该变量的值是否为3

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

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


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

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

尝试执行以下步骤:

  • 首先,将Foreach循环容器(在属性选项卡中)的
    ForceExecutionResult
    设置为
    Success
  • 然后,您应该添加一个
    Int
    *(示例:
    @[User::counter]
    类型的变量,初始值等于
    0
  • 数据流任务
    之后添加一个带有失败优先约束的命令,使用以下表达式:

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


  • 关于变量的数量,错误总是会传递。我不明白你的意思!当条件值为var>=3时,将包更改为仅传递到日志错误。有关如何执行的详细说明,请参阅以下内容:for循环容器不是问题所在。因为即使不强制执行结果成功,它也会方法是这样的。for循环容器从不失败,因为我已将数据流的事件处理程序设置为不在出错时传播。因此,即使数据流组件失败,for each容器也不会失败,并且数据流的错误仍会记录在ssis上。