SSIS 收集封裝錯誤訊息

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要做的處理。