我有一个将从SQL Server代理运行的C#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");
}
}
答案 0 :(得分:3)
正如@ChrisK所述,要正确构建一个将向SQL Server代理返回错误消息的控制台应用程序,代码必须使用try / catch并将错误消息写入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;
}