如何通过Dapper传播SQL Messages Tab输出

时间:2017-03-10 05:44:23

标签: c# sql sql-server dapper

有谁知道如何让Messages Tab输出通过Dapper传播到我的C#代码,以便我可以在某处显示它?

目前,我知道如何让行受影响计数和异常,但不是很多。

public static void ExecuteSqlCommand(string connectionString, string sql)
{
    using (var db = new SqlConnection(connectionString))
    {
        var count = db.Execute(sql, null, null, 240); 
        Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS.
    }
}

我已经尝试运行SQL Server Profiler来查看消息是否在那里显示但是没有看到任何内容。我知道通过在SQL Server Management Studio中运行我的SQL脚本来创建消息,它似乎无处可去。

我已经调查了db.InfoMessage但是没有那么有用,而且我的时间有点紧张。

例如,当我运行需要更正的创建表脚本时,我收到一条消息"警告!最大密钥长度为900字节。索引' UQ_UniqueMachineInfo'最大长度为2428字节。对于某些大值组合,插入/更新操作将失败。"我需要通过代码展示。

1 个答案:

答案 0 :(得分:4)

您没有将事件处理程序连接到连接上的InfoMessage事件。

public static void ExecuteSqlCommand(string connectionString, string sql)
{
    using (var db = new SqlConnection(connectionString))
    {
        db.InfoMessage += new SqlInfoMessageEventHandler(db_InfoMessage);
        var count = db.Execute(sql, null, null, 240); 
        Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS.
    }
}

void db_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    // handle here and look at e.Message
}