Salida de impresión del procedimiento de captura almacenada en .NET

¿Es posible capturar la salida de impresión de un procedimiento almacenado TSQL en .NET?

Tengo muchos Procs heredados que usan la impresión como medio de mensaje de error. Un ejemplo, ¿es posible acceder a la ‘palabra’ outprint de 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 = ??? 

Puede hacer esto agregando un controlador de eventos al evento InfoMessage en la conexión.

 myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage); void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e) { myStringBuilderDefinedAsClassVariable.AppendLine(e.Message); } 

Esto es realmente útil si quiere capturar impresiones en la consola de salida de LinqPad:

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