SSIS 收集封裝錯誤訊息 c#

SSIS 收集封裝錯誤訊息 c#

SSIS 收集封裝錯誤訊息又來了!

這次是 c#版的,因為改用SQL2008開發了。

在幫客戶做SSIS時,經常會需要收集執行時的錯誤訊息,將錯誤訊息E-MAIL通知IT或將錯誤訊息寫入資料庫。

(1) 選擇Event Handler

 

 

QUkY.51PnQjSrTu9IJgfyQ

 

(2) Executable選擇:封裝名稱

(3) Event handler選擇:OnError

(4) 新增一個封裝變數:strPkgErrMsg;用來收集封裝資訊。

(5) 新增一個Script task

(6) Script設定如下圖,分別填上ErrorCode、ErrorDescription、strPkgErrMsg,

注意:ErrorCode、ErrorDescription這二個變數是系統變數,只有在OnError時,系統才會出現這二個變數,其他地方是沒有的。

(7) Design Script 填下以下程式碼:

 

 

 

 

public void Main()
{
          
            Dts.Variables["User::PkgErrMsg"].Value += "ErrorDescription:" + Dts.Variables["System::ErrorDescription"].Value.ToString();
            Dts.Variables["User::PkgErrMsg"].Value = Dts.Variables["User::PkgErrMsg"].Value.ToString().Replace("'", "");
            //MessageBox.Show(Dts.Variables["User::PkgErrMsg"].Value.ToString());
            Dts.TaskResult = (int)ScriptResults.Success;
}

在這要說明的是,Replace("""", ""),是為了避免strPkgErrMsg變數,將來會在資料庫執行,雙引號(")及單引號(’),在下SQL時,可能會發生錯誤,而無法執行,所以在這先將這二個特殊符號拿掉。

以上步驟做完,已經完成收集封裝錯誤訊息的工作了,接下來看您是要寫入資料庫,或是寄出E-MAIL,可以使用我們剛才新增的strPkgErrMsg變數自由去發揮吧!

通常我們還會在Event handler的 OnTaskfailed,再加入處理的task,一併處理failed要做的處理。