SSIS 收集封裝錯誤訊息
在幫客戶做SSIS時,經常會需要收集執行時的錯誤訊息,將錯誤訊息E-MAIL通知IT或將錯誤訊息寫入資料庫。
(1) 選擇Event Handler
(2) Executable選擇:封裝名稱
(3) Event handler選擇:OnError
(4) 新增一個封裝變數:strPkgErrMsg;用來收集封裝資訊。
(5) 新增一個Script task
(6) Script設定如下圖,分別填上ErrorCode、ErrorDescription、strPkgErrMsg,
注意:ErrorCode、ErrorDescription這二個變數是系統變數,只有在OnError時,系統才會出現這二個變數,其他地方是沒有的。
(7) Design Script 填下以下程式碼:
Public Sub Main()
Dts.Variables("strPkgErrMsg").Value = "ErrorCode:" + Dts.Variables("ErrorCode").Value.ToString() + vbCrLf & _
"ErrorDescription:" + Dts.Variables("ErrorDescription").Value.ToString()
Dts.Variables("strPkgErrMsg").Value = Dts.Variables("strPkgErrMsg").Value.ToString.Replace("""", "").Replace("'", "")
'MsgBox(Dts.Variables("strPkgErrMsg").Value)
Dts.TaskResult = Dts.Results.Success
End Sub
在這要說明的是,Replace("""", "").Replace("'", "")這一段,是為了避免strPkgErrMsg變數,將來會在資料庫執行,雙引號(")及單引號(’),在下SQL時,可能會發生錯誤,而無法執行,所以在這先將這二個特殊符號拿掉。
以上步驟做完,已經完成收集封裝錯誤訊息的工作了,接下來看您是要寫入資料庫,或是寄出E-MAIL,可以使用我們剛才新增的strPkgErrMsg變數自由去發揮吧!
通常我們還會在Event handler的 OnTaskfailed,再加入處理的task,一併處理failed要做的處理。