如何正确地将错误消息从控制台返回到SQL Server代理

时间:2013-12-11 20:00:36

标签: c# sql-server console-application sql-server-agent

我有一个将从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");
    }
}

1 个答案:

答案 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;
}