[英]Raw SQL sent to SQL Server from .NET on stored procedure call
有沒有辦法從ADO.NET調用中獲取發送到SQL Server的原始文本(如SQL Profiler中所示)?
using(SqlConnection conn = new SqlConnection(connString)) {
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetSomeData";
cmd.Parameters.Add("@id").Value = someId;
cmd.Parameters.Add("@someOtherParam").Value = "hello";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
// this sends up the call: exec GetSomeData @id=24, @someOtherParam='hello'
// how can I capture that and write it to debug?
Debug.Write("exec GetSomeData @id=24, @someOtherParam='hello'");
}
我認為沒有一種方法可以從單個屬性或方法中獲得所需的東西。 我們曾經編寫一個簡單的靜態函數來轉儲文本,然后遍歷參數集合以轉儲參數值。 如今,您甚至可以使其成為擴展方法,使其看起來像SqlCommand對象的方法。
不在您的C#程序中-您必須連接SQL Profiler並監視將哪些內容發送到SQL Server。
為此,您可能會創建另一個存儲過程。 您的存儲過程將以另一個存儲過程的名稱作為參數,然后在syscomments
表中查找其定義。
或者,您可以直接從ASP.NET應用程序查詢syscomments
。
select text from syscomments where id = OBJECT_ID('NameOfSproc')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.