2013-12-11 7 views
3

У меня есть приложение консоли C#, которое будет запущено из агента SQL Server. Если консольное приложение завершилось неудачно, я хотел бы иметь сообщение об ошибке, указанное в журнале событий агента SQL Server. Но он, похоже, не захватывает ничего из консольного приложения. Он только говорит:Как правильно вернуть сообщение об ошибке из Console в агент SQL Server

Сообщение Выполнено как пользователь: domain \ account. Шаг не генерировал никакого вывода. Код выхода процесса 1. Не удалось выполнить шаг.

Так как я должен построил мой консольное приложение, так что агент SQL Server будет выведено сообщение об ошибке вместо «Стадию не генерирует никаких выходных данных.» сообщение?

Вот простой код, который я испытал:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var x = 0; 

     // division by zero error 
     var y = 1/x; 


     //Console.Error.WriteLine("error message"); 
    } 
} 
+4

вы пробовали заявления попробовать/поймать? http://msdn.microsoft.com/en-us/library/0yd65esw.aspx Поскольку выполнение, скорее всего, приведет к сбою/завершению вашего приложения, поэтому оно даже не достигнет выходной линии. – ChrisK

+0

вы правы, я просто поставил try/catch и написал ошибку в Console.Error, и все отлично работало с агентом SQL Server. Большое спасибо! –

ответ

1

Как заявил @ChrisK, чтобы правильно построить консольное приложение, который будет возвращать сообщение об ошибке агента SQL Server, код должен использовать попробовать/поймать и записать сообщение об ошибке в console.error

Написание кода таким образом решить мою проблему:

static int Main(string[] args) 
{ 
    try 
    { 
     var x = 0; 
     var y = 1/x; 
    } 
    catch (Exception ex) 
    { 
     Console.Error.WriteLine(ex); 
     return 1; 
    } 

    return 0; 
}