Capture d’impression de procédure stockée dans .NET

Est-il possible de capturer une sortie d’impression à partir d’une procédure stockée TSQL dans .NET?

J’ai beaucoup de processus hérités qui utilisent l’impression comme moyen de errorMessaging. Par exemple, est-il possible d’accéder au mot «mot» à partir de 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; // ssortingng ProcPrint = ??? 

Vous pouvez le faire en ajoutant un gestionnaire d’événements à l’événement InfoMessage sur la connexion.

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

C’est très pratique si vous voulez capturer une sortie d’impression dans la console de sortie de LinqPad:

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