有谁知道如何让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字节。对于某些大值组合,插入/更新操作将失败。"我需要通过代码展示。
答案 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
}