2014-01-22 222 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