在.NET中捕获存储过程打印输出

是否有可能从.NET中的TSQL存储过程捕获打印输出?

我有很多传统的Procs,使用打印作为errorMessaging的手段。 一个例子,是否有可能从下面的PROC访问outprint“word”?

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

您可以通过向连接上的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(); };