Cómo propagar la salida de la pestaña Mensajes SQL a través de Dapper

c# dapper sql sql-server

Pregunta

¿Alguien sabe cómo puedo hacer que la salida de la pestaña Messages se propague a través de Dapper a mi código C # para que pueda mostrarlo en algún lugar?

Actualmente, sé cómo hacer que las filas afecten el conteo y las excepciones, pero no mucho más.

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.
    }
}

Intenté ejecutar SQL Server Profiler para ver si los mensajes se muestran allí pero tampoco vi nada. Sé por ejecutar mi script SQL en SQL Server Management Studio que se crea un mensaje, simplemente no parece ir a ninguna parte.

Investigué db.InfoMessage pero no funcionó y me siento un poco empujado por el tiempo.

Por ejemplo, cuando ejecuto un script de crear tabla que necesita corrección, aparece un mensaje "Advertencia: la longitud máxima de la clave es de 900 bytes. El índice 'UQ_UniqueMachineInfo' tiene una longitud máxima de 2428 bytes. Para algunas combinaciones de valores grandes, la inserción / la operación de actualización fallará ". que necesito mostrar a través del código.

Respuesta aceptada

No está conectando un controlador de eventos al evento de InfoMessage en la conexión.

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
}


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué