Data Flow的错误输出

一,在Data Flow Task中,对于Error Row的处理通过Error Output Tab配置的。

 

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 Flow Design

2,配置Data Conversion 组件的Error Output

在Data Comversion 组件,进行一个转换,将字符串类型转换为int 类型,产生错误

配置Error的错误处理方式是 Redirect Row

在Advanced Editor中查看组件的Error Output columns:ErrorCode 和 ErrorColumn,这两个Column 都是 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的Metadata,共有四个Column,Source的两个(ID和 Env),ErrorCode 和 ErrorColumn,对于转换失败的Column(copy of env),并没有出现在path中。对于转换失败的新增Column,Error Output不会输出给下游组件。

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

 

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

结论:Data Flow的错误处理方式,表示组件能够自行处理错误。当设置Failure Component时,表示Data Flow需要触发OnError Event,抛出错误信息;当设置Redirect或者ignore,表示Data Flow 不会触发OnError Event,Data Flow 将按照设定的容错逻辑进行处理。

 

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: SSIS






本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5493973.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值