Frage Capture Stored Procedure Druckausgabe in .NET


Ist es möglich, Druckausgaben von einer gespeicherten TSQL-Prozedur in .NET zu erfassen?

Ich habe eine Menge veralteter Procs, die den Druck als Mittel der errorMessaging verwenden. Ein Beispiel, ist es möglich, auf das Outprint-Wort von folgenden PROC zuzugreifen?

-- 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 = ???

76
2017-12-10 11:51


Ursprung


Antworten:


Sie können dies tun, indem Sie dem Ereignis einen Ereignishandler hinzufügen InfoMessage Ereignis auf der Verbindung.

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

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

118
2017-12-10 11:58



Dies ist sehr praktisch, wenn Sie die Druckausgabe in der Ausgabekonsole von LinqPad erfassen möchten:

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

6
2018-05-13 23:05