是否可以通过ADO.NET访问SQL Server“副产品消息”?由于缺少单词,“副产品消息”是指出现在Microsoft SQL Server Management Studio的消息选项卡中的输出。我特别在意的是读取SET STATISTICS TIME ON的输出。看来SqlDataReader在这个问题上没有提供任何东西。通过ADO.NET访问SQL Server消息
18
A
回答
24
是的,有一个在SqlConnection
类称为SqlInfoMessage
,你可以挂接到事件:
SqlConnection _con =
new SqlConnection("server=.;database=Northwind;integrated Security=SSPI;");
_con.InfoMessage += new SqlInfoMessageEventHandler(InfoMessageHandler);
事件处理程序看起来像这样:
static void InfoMessageHandler(object sender, SqlInfoMessageEventArgs e)
{
string myMsg = e.Message;
}
的e.Message
是打印的信息进入SQL Server Management Studio的消息窗口。
2
非常感谢您的回复。我刚刚做了一个小实验,发现从多记录集结果中读取消息(在这种情况下,由SET STATISTICS TIME ON产生)时出现了一些意想不到的故障(一个bug?)。如下所示,即使在最后的结果集之后,也必须调用NextResult以获得最后的消息。在单个记录集结果的情况下这不是必需的。
using System;
using System.Data.SqlClient;
namespace TimingTest
{
class Program
{
static void Main(string[] args)
{
SqlConnection conn = new SqlConnection("some_conn_str");
conn.Open();
conn.InfoMessage += new SqlInfoMessageEventHandler(Message);
SqlCommand cmd = new SqlCommand("some_sp", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) { };
rdr.NextResult();
while (rdr.Read()) { };
// this is needed to print the second message
rdr.NextResult();
rdr.Close();
conn.Close();
}
static void Message(object sender, SqlInfoMessageEventArgs e)
{
Console.Out.WriteLine(e.Message);
}
}
}
+0
这对于一个单独问题的答案是很好的,例如“在执行返回多个结果集的查询之后,如何获取最后的信息消息?”或类似的东西。 – 2012-01-22 06:32:05
相关问题
- 1. 通过Twitter API访问直接消息
- 2. 通过node.js访问SQL Server Analysis Services
- 3. 客户端通过Internet访问SQL Server
- 4. 通过ADO.NET在64位CSV访问?
- 5. 通过ADO.NET记录数据库访问
- 6. 通过SQL Server命令通过ADO.NET读取excel?
- 7. sql server通过电子邮件发送输出消息
- 8. 访问SQL Server
- 9. SQL Server - SQL游标与ADO.NET
- 10. ADO.NET + Sql Server Varchar编码问题
- 11. 访问SQL Server 2008中的更改跟踪信息通过实体框架
- 12. SQL Group通过问题SQL Server 2005 CE
- 13. SQL Server和消息队列
- 14. C#通过ADO.NET失败的Oracle和SQL Server事务
- 15. 通过Ado.Net 3.5和C多次插入到SQL Server 2008中#
- 16. 通过ADO.NET连接到SQL Server - 空列表框
- 17. 如何通过ADO.NET
- 18. 访问SQL Server中的执行过程
- 19. 如何通过Python访问windows cmd消息
- 20. 通过ADO.NET数据服务客户端库访问SQL数据服务
- 21. 无法通过内部连接访问CTE SQL Server
- 22. android通过web服务IIS或axis访问sql server?
- 23. 从Windows服务通过网络访问SQL Server
- 24. 使SQL Server 2005可以通过Internet访问
- 25. 通过asp.net从多个网页访问SQL Server数据库
- 26. 如何配置SQL Server以允许通过IIS进行访问
- 27. 通过SQL Server中的链接服务器访问OPEN Excel表
- 28. 通过2008 64位SSMS访问SQL Server Express 2005数据库
- 29. 通过Ruby访问Sql Server活动记录JDBC
- 30. SQL Server:访问全文索引通过LINQ
+1。 ADO(`OnInfoMessage`)在我的鼻子下已经有十多年了;我从未赞赏它是什么。 – 2012-02-03 20:57:44