SSIS 处理错误的方法
Package在执行过程中,不可避免地会发生错误,如果处理错误?简单粗暴的做法,是Package直接停止运行。对于一个成熟的ETL工具,这显然不是唯一的错误处理方法。如果在数据流中出现错误,那么数据流组件可以把错误行输出,这只需要在组件的ErrorOutput中进行简单地配置。跟数据流相比,控制流中包含错误处理程序OnError,对错误事件的处理更加复杂和精细。
用户可以通过MaximumErrorCount属性和OnError事件处理程序来对错误进行控制:
- Package本身、Task 和 Container具有属性MaximumErrorCount,用于控制错误之前组件可以出错的次数 ;
- OnError事件处理程序能够捕获Task或容器中触发的OnError事件,并对错误进行处理。
一,属性MaximumErrorCount用法
属性MaximumErrorCount 指定Task组件在失败之前可以出错的次数,当累积的错误达到属性MaximumErrorCount的值时,Task执行失败。该属性的默认值是1,也就是,只要发生错误,组件就会失败。
1,测试容器的MaximumErrorCount
设置容器的属性MaximumErrorCount=2,其子Task发生一个错误,执行情况如下图所示:

容器执行成功,子Task执行失败,这是由于容器的MaximumErrorCount属性是2,还没有达到失败的阈值,因此容器的执行结果是成功的。在Progress 选项卡中,SSIS 报出Warning信息:
Warning: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS Package 最终的执行结果是

失败的原因是错误会继续向父组件传递,直到传递到Root Level(Package),而Package的MaximumErrorCount=1。
2,测试Package的属性MaximumErrorCount
把Package的属性MaximumErrorCount设置为2,把容器的属性MaximumErrorCount设置1,查看Package的执行结果


在Progress Tab中查看执行过程:
[Execute SQL Task2] Error: Executing the query "insert into dbo.test_env
values(1,N'test_error')" failed with the following error: "An explicit value for the identity column in table 'dbo.test_env' can only be specified when a column list is used and IDENTITY_INSERT is ON.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
二,OnError事件的错误处理程序
在一个OnError 事件的处理程序中,如果把系统变量Propagate属性设置为False,那么不需要修改父容器的MaximumErrorCount属性,就能保证在发生错误后,Package可以继续运行。
1,测试系统变量 Propagate
为容器下的Execute SQL Task创建OnError事件处理程序,把OnError的事件处理程序中的系统变量 Propagate设置为False

查看package的执行结果,虽然Execute SQL Task 2执行失败,但是容器的执行结果是成功的,Package的执行结果也是成功的,如下图所示:


从Progress中查看到的错误消息是:
[Execute SQL Task] Error: Executing the query "insert into dbo.test_env
values(1,N'test_error')" failed with the following error: "An explicit value for the identity column in table 'dbo.test_env' can only be specified when a column list is used and IDENTITY_INSERT is ON.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
2,从SSISDB中查看错误
把Package部署到Integration Services Catalog中,查看执行的结果,Satus是Succeeded,Error messages中显示错误的信息。

四,错误对执行结果和消息的影响
控制流中发生的任何错误,都会被SSIS引擎捕获;不管如何设置Task或Container的属性,只要发生错误,就会产生错误消息。
错误能够向上传递,当错误被OnError事件处理程序捕获时,通过设置系统变量Propagate为False时,可以停止错误向父级别传递。
Package的执行结果收到属性的控制,组件抛出错误,Package仍然可能执行成功,只不过progress中会记录错误消息。
SSIS 处理错误的方法的更多相关文章
- SQL SERVER 9003错误解决方法 只适用于SQL2000
SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...
- New XAMPP security concept:错误解决方法
New XAMPP security concept:错误解决方法 (2014-03-06 16:07:46) 转载▼ 分类: php 在Linux上配置xampp后远程访问域名报错: New X ...
- hadoop本地库与系统版本不一致引起的错误解决方法
hadoop本地库与系统版本不一致引起的错误解决方法 部署hadoop的集群环境为 操作系统 centos 5.8 hadoop版本为cloudera hadoop-0.20.2-cdh3u3 集 ...
- mysql Access denied for user root@localhost错误解决方法总结(转)
mysql Access denied for user root@localhost错误解决方法总结(转) mysql Access denied for user \'root\'@\'local ...
- Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法
Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法 Some sites could ...
- eWebeditor编辑器上传图片路径错误解决方法[疑难杂症]【转,作者:unvs】
做了一个多版本的网站,后台用的编辑器是eWebeditor,NET版,后面发现上传图片或者文件之后,路径错误无法显示,必须手工修改才行.. 为了更清楚的说明问题,我下面会说的比较详细,首先是网站文件框 ...
- 网站启动SSL, http变为https后,session验证码错误解决方法
网站启动SSL, http变为https后,session验证码错误解决方法 最近公司需要后台启动安全证书,证书安装完毕后,后台老提示 验证码错误,经过几天的研究,此问题已经得到有效解决,现把方法 ...
- 【转贴】Linux系统NGINX负载均衡404错误处理方法
NGINX负载均衡404错误处理方法 使用NGINX 实现负载均衡,但一组服务器的数据不是实施同步,主服务器有了数据要过段时间才同步到其他服务器 upstream image.stream.com ...
- Oracle OCI-22053:溢出错误解决方法
原文 Oracle OCI-22053:溢出错误解决方法 Oracle 数值数据类型最多可存储 38 个字节的精度.当将 Oracle 数值转换为公共语言运行库数据类型时,小数点后边的位数可能过多,这 ...
随机推荐
- Linux系统重要的开机自启动的服务
重要的开机自启动的服务 1.sshd 连接Linux服务器是需要用到的服务程序 2.rsyslog 操作日志的一种机制 系统日志:/var/log/message ...
- ELK搭建实时日志分析平台之二Logstash和Kibana搭建
本文书接前回<ELK搭建实时日志分析平台之一ElasticSearch> 文:铁乐与猫 四.安装Logstash logstash是一个数据分析软件,主要目的是分析log日志. 1)下载和 ...
- 绛河 初识WCF4
参考: http://blog.csdn.net/anlun/article/details/44860821 第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF ...
- 如何让邮件营销平台成为EDM神器?
任何一家做邮件营销的企业都希望自己的投入获得超乎想象的回报,出现打开率.点击率和伴随而来的成交量能够节节攀升的现象,这些数据我们当然可以通过监测各种平台的反馈而得到确切的报表.当然,作为邮件营销平台运 ...
- Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)[转]
cnrstar (Be My Personal Best!) | 2014-05-20 21:58 众所周知,Mysql的用户在没有File权限情况下是无法通过Load_file读文件或者通过into ...
- win命令行环境编码设置为utf-8
win命令行环境编码默认为gbk,有时运行文件编码为utf-8,会导致编码错误,可以修改注册表进行设置环境编码. win+r =>regedit 找到 计算机\HKEY_CURRENT_USER ...
- vue项目用nodejs实现模拟数据方法
1)在项目根目录(如demo)中创建一个文件夹,如base,将项目中所有的前端文件全部放到base文件夹中,此时项目demo下只有一个文件夹base 2)通过cmd进入命令窗口,直接执行npm ins ...
- thusc2018真退役记
$day1$: 看了三道题,感觉这次特别毒瘤啊.. $t1$想了一会儿,发现是个傻逼题,然后切掉了. $t2$想了很久,不会,先去搞题答. 题答搞了很久,只搞出第一个点,后面的点根本没看出是什么意思. ...
- BZOJ2281:[SDOI2011]黑白棋(博弈论,组合数学,DP)
Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...
- Zookeeper框架Curator使用
本文参考自https://blog.csdn.net/wo541075754/article/details/69138878?utm_source=gold_browser_extension ht ...