Захват вывода на печать хранимых процедур in.NET


можно ли захватить вывод печати из хранимой процедуры TSQL в .NET?

У меня есть много устаревших процессов, которые используют печать как средство errorMessaging. Например, можно ли получить доступ к outprint 'word' из следующего 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 = ???
2 81

2 ответа:

вы можете сделать это, добавив обработчик событий в InfoMessage событие на связи.

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

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

это очень удобно, если вы хотите захватить вывод печати в консоли вывода LinqPad:

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