我有一个将从 SQL Server 代理运行的 C# 控制台应用程序。如果控制台应用程序失败,我希望在 SQL Server 代理历史记录日志中显示错误消息。但它似乎没有从控制台应用程序中获取任何东西。它只说:
Message Executed as user: domain\account. The step did not generate any output. Process Exit Code 1. The step failed.
那么我应该如何构建我的控制台应用程序,以便 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");
}
}
最佳答案
如@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;
}
关于c# - 如何正确地将错误消息从控制台返回到 SQL Server 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528785/