是否可以通過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. 如何通過Ruby訪問Mule消息?
- 3. 通過node.js訪問SQL Server Analysis Services
- 4. 客戶端通過Internet訪問SQL Server
- 5. 通過ADO.NET記錄數據庫訪問
- 6. 通過ADO.NET在64位CSV訪問?
- 7. 通過SQL Server命令通過ADO.NET讀取excel?
- 8. SQL Server SYS消息
- 9. 通過ado.net從C#調用SQL Server存儲過程超時
- 10. 訪問SQL Server
- 11. 訪問SQL Server
- 12. sql server通過電子郵件發送輸出消息
- 13. 檔案ADO.NET語句,而不必訪問SQL Server探查
- 14. SQL Server - SQL遊標與ADO.NET
- 15. ADO.NET + Sql Server Varchar編碼問題
- 16. SQL Group通過問題SQL Server 2005 CE
- 17. 訪問SQL Server 2008中的更改跟蹤信息通過實體框架
- 18. 通過Ado.Net 3.5和C多次插入到SQL Server 2008中#
- 19. C#通過ADO.NET失敗的Oracle和SQL Server事務
- 20. 通過ADO.NET連接到SQL Server - 空列表框
- 21. 通過ADO.Net建立ASP.NET和SQL Server之間的連接?
- 22. 消息512 ... SQL Server代碼
- 23. asp.net sql server錯誤消息
- 24. SQL Server和消息隊列
- 25. HL7 - 結束訪問通知消息
- 26. 訪問Facebook的通知,消息等
- 27. 訪問Facebook消息
- 28. 通過Web服務訪問Team Foundation Server的信息
- 29. 如何通過ADO.NET
- 30. 訪問SQL Server中的執行過程
+1。 ADO(`OnInfoMessage`)在我的鼻子下已經有十多年了;我從未讚賞它是什麼。 – 2012-02-03 20:57:44