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

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

我有一个将从 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/

相关文章:

asp.net - 在旧的胖客户端数据库上放置一个新的 Web 界面

c# - 将容器对象内的所有公共(public)对象(字符串/整数/枚举)的值写入控制台

vb.net - 从字符串 "a"到类型 'Boolean' 的转换无效

使用 eclipse 和 mingw 的控制台应用程序(不在 cms.exe 中启动应用程序)

c# - 使用线程的异步 Rest API 调用会影响性能吗?

C#,如何创建一个事件并在另一个类中监听它?

c#参数问题

c# - 异常处理(矛盾的文档/尝试最终与使用)

javascript - 将 SQL 日期转换为 Javascript 格式

sql - 创建获取状态代码函数