SSIS 数据流的错误输出

数据流任务对错误的处理,和控制流不同,在数据流中,主要是对于错误行的处理,一般通过Error Output配置。

1,操作失败的类型:Error(Conversion) 和 Truncation。

2,错误处理方式:Fail Component,Ignore Failure 和 Redirect Row

3,Error Output增加两个跟Error相关的Column:ErrorCode 和 ErrorColumn,这两个Column的数据类型是DT_4

一,错误处理方式

当遇到错误行时,对待错误行的方式有三种:

  • Fail Component:当某一列选择了Fail Component,并且产生了错误时,数据流将停止并失败,同时触发任何针对Data Flow Task的OnError Event。
  • Redirect Row:当任何被标记为Redirect Row的column 中任何一行产生错误,整个行将被发送到红色的错误path输出,但数据流不会失败。如果没有使用红色的Error Path输出,那么,该行将会从数据流中抛弃。
  • Ignore Failure:忽略错误。如果错误发生在源或转换中,那么错误列的值会被设置为NULL;如果是截断错误,那么只会向下游发送部分截断后的值;当错误发生在目的组件上,Ignore Failure的处理方式将会导致目的组件忽略整个行。

这三种处理错误的方式,只有Fail Component 会导致Data Flow 失败,触发OnError Event,并产生错误信息;Redirect Row 和 Ignore Failure 不会导致任何组件失败,因此,SSIS 不会抛出任何错误信息。

二,对Error Row的做 Redirect 处理

有以下数据流设计:

1,配置Data Conversion 组件的Error Output

在Data Comversion 组件,进行一个转换,将字符串类型转换为int 类型,故意使其产生错误,配置错误处理方式是 Redirect Row

2,输出错误代码和错误列

在Advanced Editor中查看组件的错误输出列:ErrorCode 和 ErrorColumn,这两列都是 DT_I4类型,用于输出 ErrorCode 和 发生错误的Column ID。

3,存储Error Output

创建临时表,存储Data Conversion的Error Output

create table dbo.Test_ErrorOutput
(
    ID int,
    Env nvarchar(11),
    ErrorCode int,
    ErrorColumn int
)

将Data Conversion的 红色Path(Error Output Path)链接到Error Output Destination。

查看 Error Output path的元数据,共有四列:Source的两个(ID和 Env),ErrorCode 和 ErrorColumn,对于转换失败的Column(copy of env),并没有出现在path中。对于转换失败的新增Column,Error Output不会输出给下游组件。

4,执行Package,查看执行结果

Redirect Row的错误处理方式不会导致Data Flow Task的失败,不会触发OnError 事件,也不会导致其子组件和整个Package的失败。

三,结论

数据流的错误处理方式,使得数据流组件能够自行处理错误,不同的错误处理方式,产生的结果也是不同的:

  • 当设置Failure Component时,表示Data Flow需要触发OnError 事件,抛出错误信息;
  • 当设置Redirect或者ignore,表示Data Flow 不会触发OnError Event,Data Flow 将按照设定的容错逻辑进行处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值