SSIS 收集封裝錯誤訊息 c#
SSIS 收集封裝錯誤訊息又來了!
這次是 c#版的,因為改用SQL2008開發了。
在幫客戶做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 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要做的處理。