簡體   English   中英

在存儲過程調用中從.NET發送到SQL Server的原始SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM