zoukankan      html  css  js  c++  java
  • SSIS 数据流的错误输出

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

    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 Conversion 组件的Error Output

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

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

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

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

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

    三,结论

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

    • 当设置Failure Component时,表示Data Flow需要触发OnError 事件,抛出错误信息;
    • 当设置Redirect或者ignore,表示Data Flow 不会触发OnError Event,Data Flow 将按照设定的容错逻辑进行处理。
  • 相关阅读:
    sql server 如何查看这个数据库有多少张表并具体显示出来
    SQL Server2008 SP1安装 查找安装媒体怎么解决
    检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
    sql不记得用户名跟密码怎么办
    必背系列之数据库常用语法
    select * from 多张表的用法
    SAP与Oracle ERP
    with as的用法
    IIS启动网站--HTTP错误500.21
    SqlServer2012--备份介质集不完整 ,介质集有2个介质簇但只提供了1个
  • 原文地址:https://www.cnblogs.com/ljhdo/p/5493973.html
Copyright © 2011-2022 走看看