标签:
一,在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 将按照设定的容错逻辑进行处理。
标签:
原文地址:http://www.cnblogs.com/ljhdo/p/5493973.html