2015-09-29 1 views
1

У меня есть пакет SSIS, в котором я создал задачу Script в событии OnError для отправки электронной почты, предупреждающей пользователей о том, что произошла ошибка.Задача SSIS onError для отправки электронной почты - включить сведения об исключении

Это прекрасно работает, но то, что я хотел бы сделать, это включить в мой почтовый ящик сообщение об исключении, которое вызвало срабатывание обработчика события. Как я могу получить доступ к исключению внутри задачи скрипта?

Текущий тело сценария:

/// <summary> 
    /// This method is called when this script task executes in the control flow. 
    /// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure. 
    /// To open Help, press F1. 
    /// </summary> 
    public void Main() 
    { 
     try 
     {     
      string mailBody = "<p>XXXX package has failed.</p><p>Please investigate.</p>"; 
      string mailFrom = Dts.Variables["MailFrom"].Value.ToString(); 
      string errorMailTo = Dts.Variables["ErrorMailTo"].Value.ToString();     

      string smtpConnectionString = (string)(Dts.Connections["SMTPConnectionManager"].AcquireConnection(Dts.Transaction)); 
      string smtpServer = smtpConnectionString.Split(new char[] { '=', ';' })[1]; 

      var smtpClient = new SmtpClient(smtpServer); 
      var message = new MailMessage(mailFrom, errorMailTo, mailSubject, mailBody) { IsBodyHtml = true }; 

      // TODO append exception message to the mail body. 

      smtpClient.Send(message); 

      Dts.TaskResult = (int)ScriptResults.Success; 
     } 
     catch (Exception ex) 
     { 
      string message = ex.Message; 

      if (ex.InnerException != null) 
      { 
       message = message + " " + ex.InnerException.Message; 
      } 

      Dts.Log("Error email sending failure - " + message, 0, new byte[0]); 

      Dts.TaskResult = (int)ScriptResults.Failure; 
      throw; 
     } 
    } 

ответ

0

Это, как правило, хранятся в @ [System :: ErrorDescription] переменной, которую вам нужно будет отобразить только для чтения доступа.

Вы также можете использовать @ [System :: ErrorCode], но коды ошибок SSIS обычно не очень полезны.

+0

Привет, спасибо, я буквально только что нашел эту переменную. Сайт здесь был вверх и вниз для меня сегодня, так что просто обновление! – obaylis