none
SSIS的错误处理 RRS feed

  • 问题

  • SQL Server提供的SSIS,总的来说,看上去功能强大,其实限制很多。这不,这个error处理就搞的我头大,只能到这请教各位了。

     

    背景:

    在data flow里面,从文件里面读取数据插入到表中的过程,如果因为类型不一致,长度超长,主键冲突等问题出错了,需要把出错行写到log中,并需要把出错信息出到log中。

     

    问题:

    出错行,通过控件的error处理选项,选择“行重定向”,然后拉一个script控件出来接,就可以取到出错行,然后写段script写到log中。但是这样做的问题是,取到的errorCode不是DB出错的errorCode,而是控件的errorCode,导致根据errorCode取到的错误信息内容和不选“行重定向”直接出出来的错误信息不一样,看不出错的原因(类型不对还是主键重复看不错来)。也就是说,只能得到错误的行,不能得到错的内容。

    然后我又想了一招,就是从文件读完数据后,自己写SP接了来插到表中,但是为了得到出错行,必须一条一条处理,试了一下发现性能很差,明显不符合要求。

     

    请各位看看,有没有别的解决之道。

    2010年10月27日 2:16

答案

  • Data Flow 中的错误捕获有很多方式,单纯地 Redirection 不是足够能完成你的要求,你可以试试 Event Handler 和 SSIS 的 Logging, 凡是SQL 能捕获到的错误,SSIS 同样能捕获到。

    2010年10月31日 22:45
    版主

全部回复

  • 加个条件拆分组件,这个组件可以把你想要的错误数据分离开。
    2010年10月27日 13:37
  • 谢谢!

    条件拆分组件,抱歉,我使用的是英文版,是对应的哪个英文能提示一下,或者截个图给我吗?我Mail:cy_dancer@hotmail.com.

     

    2010年10月28日 3:43
  • Data Flow 中的错误捕获有很多方式,单纯地 Redirection 不是足够能完成你的要求,你可以试试 Event Handler 和 SSIS 的 Logging, 凡是SQL 能捕获到的错误,SSIS 同样能捕获到。

    2010年10月31日 22:45
    版主