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

ssis文件怎么加载(数据流的错误输出)(1)

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

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

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

一,错误处理方式

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

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

二,对Error Row的做 Redirect 处理

有以下数据流设计:

ssis文件怎么加载(数据流的错误输出)(2)

1,配置Data Conversion 组件的Error Output

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

ssis文件怎么加载(数据流的错误输出)(3)

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

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

ssis文件怎么加载(数据流的错误输出)(4)

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。

ssis文件怎么加载(数据流的错误输出)(5)

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

ssis文件怎么加载(数据流的错误输出)(6)

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

ssis文件怎么加载(数据流的错误输出)(7)

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

三,结论

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

,