码迷,mamicode.com
首页 > 其他好文 > 详细

Data Flow的Error Output

时间:2016-05-15 12:20:59      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

一,在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 将按照设定的容错逻辑进行处理。

 

Data Flow的Error Output

标签:

原文地址:http://www.cnblogs.com/ljhdo/p/5493973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!