Data Flow >> Source >> Error Output >> Error & Truncation: Ignore Failure, Redirect Now, Fail Component

Ignore Failure: 当该字段遇到错误时,字段值被设为NULL

Redirect Now: 把该行输出到SSIS的Source组件的红色输出线,这时红色输出线应该连接一个可以接受结果集的组件,再做错误处理

Fail Component: 遇到错误就Fail掉整个组件

-------------------------------------------------------------------------------------------------------------------------

百度下找到一篇别人讲SSIS组件Error output的文章,里面讲到了基于SSIS做数据导入时对错误数据的处理方法。

文章结尾讲到一句话我觉得很好:

设计一定要和包的日志设计搭配起来,让用户可以很容易的跟踪到具体是哪一天,哪一次的错误输出。再扩展延伸就可以做很多报表,专门用来统计这种错误输出记录的条数,包括用户可以很容易的通过报表来查阅这种错误数据等等。

 需要注意的点:

Ignore Failure, Redirect Now, Fail Component也有讲究,源输入组件和目标组件都有Error Output,那在Data Flow Container里面,究竟把Error Output处理放在源输入组件上还是目标组件上,区别是什么?

在实际项目中经常碰到这类错误,最常见的情形就是一开始的时候源端报错了,然后解决了源端的问题,结果目标端又出现了错误。第二则是,分不清到底是应该在目标连接管理器连接平面文件的时候就设置数据类型,还是中间通过 Data Conversion 转换再到目标端?第三就是,对于这种文件类型的数据转换,到底需要不需要 Data Conversion 来转换?
 
无论是源端亦或是目标端的错误处理,都是可以做到使用Redirect row选项来错误的数据导向到另外一个地方,但是两者不同之处是对于Flatfile来说,源端的错误处理最后是把一整行数据作为一个栏位输出,这里没有办法通过什么RowDelimitor之类的来把FlatFile中的行断成一个字段字段再输入到目标数据库中,需要进入到表中再做二次处理,用什么SUBSTRING之类的函数去拆。如果业务场景是用户希望去审核这些数据,可能通过报表之类的工具,那么可以是把数据拆分好来展现数据,那么做法就是在目标端处理错误,源端放宽栏位限制,全部都是string类型,兼容所有类型,然后再用Data Conversion组件转换成我们希望的数据类型,错误就输出到另外一张表,这张表的数据类型也都是字符串类型,兼容性好。
 
引文地址:http://blog.csdn.net/lotusz/article/details/44081487
 
原文地址:https://www.cnblogs.com/jenrrychen/p/4456997.html