2014-01-22 190 views
1

我试图实现SSIS包失败处理程序。我已经在整个包和失败操作中添加了onError事件处理程序,我期待控制流中出现错误。处理SSIS验证失败

该软件包的主要任务是从db中获取一些数据, 错误处理程序是Send Mail Task发送带有错误描述的电子邮件消息。

现在,我试图模仿一个常见的错误:我做的SQL查询的一些变化(例如,对于一列设置不正确的名称),并尝试运行该程序包。

什么,我看到的是,包在审定阶段失败,甚至不继续执行,说

Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occured. Error Code 0x80040E14. An OLE DB record is available. Source "Microsoft SQL Server Native Client 11.0"  
Hresult 0x80040E14 Description "Statement(s) could not be prepared" 
Description "The multipart identifier "MyTable.SomeWrongField" could not be bound". 
Error: "OLE DB Source" failed validation and returned validation status "VS_BROKEN". 

,它甚至没有procceed来执行,确认后立即失效。 如何设置错误句柄,以便它处理每个错误,甚至像这样的问题(不正确的sql请求)?

谢谢。

+0

您可以随时通过发送邮件任务创建另一个事件处理程序OnTaskFailed或OnPreValidate。 –

+0

OnTaskFailed也不起作用。 – user2703790

回答

1

验证错误是SSIS等效语法错误。由于执行死于水中,因此没有机会恢复。 OnTaskFailed和OnError不会捕获这种类型的错误(这是我们不再在我们的包内部实现错误通知的原因之一)

+0

无论如何你都会执行通知吗? – user2703790