46 votos

La captura de Procedimiento Almacenado salida de impresión .NET

Es posible la captura de la salida de impresión de un TSQL procedimiento almacenado .NETA?

Tengo un montón de legado Procs que el uso de la impresión como medio de errorMessaging. Un ejemplo, es posible acceder a la outprint 'palabra' de la siguiente PROC?

-- The PROC
CREATE PROC usp_PrintWord AS
    PRINT 'word'

// Some C# Code to would like to pull out 'word'
SqlCommand cmd = new SqlCommand("usp_printWord", TheConnection);
cmd.CommandType = CommandType.StoredProcedure;
// string ProcPrint = ???

72voto

AdaTheDev Puntos 53358

Usted puede hacer esto mediante la adición de un controlador de eventos para el InfoMessage evento en la conexión.

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);
}

0voto

BraveNewMath Puntos 1306

Esto es realmente útil si desea capturar la salida de Impresión en LinqPad de salida de la consola:

SqlConnection conn = new SqlConnection(ConnectionString);
//anonymous function to dump print statements to output console
conn.InfoMessage += (object obj, SqlInfoMessageEventArgs e)=>{
                e.Message.Dump();
            };

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X