SSIS包OnError事件处理器无错误仍发送通知问题求助
解决SSIS包OnError事件处理器误触发问题
1. 确认事件处理器的绑定范围
- 检查OnError事件处理器是绑定在包级别还是特定任务上。如果是包级别,它会捕获包初始化、连接验证等环节的错误,哪怕任务都被禁用。建议先移除包级的OnError,仅给需要监控的任务单独配置事件处理器。
- 右键事件处理器,查看「事件」和「可执行文件」选项,确认绑定对象是否正确,避免误绑定到包自身的初始化事件。
2. 排查包初始化阶段的隐性错误
即使所有任务禁用,包启动时仍会执行连接验证、配置加载等操作,这些环节出错会触发OnError:
- 逐个测试所有连接管理器,确认连接字符串、权限、目标资源(如文件路径、数据库实例)是否有效。
- 检查包的配置项(XML配置、环境变量等),确认配置值不存在无效引用或缺失。
- 启用SSIS详细日志(日志级别设为「详细」),运行包后查看日志条目,定位触发OnError的具体来源。
3. 添加事件执行的条件约束
给事件处理器的发送消息任务添加优先约束,增加错误判断逻辑:
- 在发送消息任务前添加一个「脚本任务」,脚本内判断
Dts.Variables["System::ErrorCode"].Value.ToString() != "0",仅当条件成立时才执行发送消息操作。 - 也可以直接在发送消息任务的表达式中加入条件,确保只有真正的错误发生时才生成消息。
4. 重置事件处理器配置
- 删除现有包级OnError事件处理器,重新创建新的事件处理器,手动配置发送消息的逻辑,避免复制旧配置带来的缓存异常。
- 将包导出为
.dtsx文件,再重新导入到项目中,清除项目级的缓存问题。
5. 排查SSIS运行时底层错误
- 检查SQL Server Integration Services服务的运行状态,确认服务账户具备必要的资源访问权限。
- 打开Windows事件查看器的「应用程序日志」,查找SSIS相关的错误记录,这些底层错误可能不会在包的日志中显示,但会触发OnError事件。
内容的提问来源于stack exchange,提问作者Houman Fathi
相关产品推荐
相关产品推荐

