存储过程调用时从.NET将原始SQL发送到SQL Server
有没有办法从ADO.NET调用中获取发送到SQL Server的原始文本(如SQL Profiler中所示)存储过程调用时从.NET将原始SQL发送到SQL Server,.net,sql-server,.net,Sql Server,有没有办法从ADO.NET调用中获取发送到SQL Server的原始文本(如SQL Profiler中所示) using(SqlConnection conn = new SqlConnection(connString)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "GetSomeData";
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对象的方法。我认为没有办法从单个属性或方法中获得所需的内容。我们过去常常编写一个简单的静态函数来转储文本,然后迭代参数集合以转储参数值。这些天,您甚至可以将其作为扩展方法,使其看起来像SqlCommand对象的方法。不在您的C程序中-您必须连接SQL Profiler并监视发送到SQL Server的内容。不在您的C程序中-您必须连接SQL Profiler并监视发送到SQL Server的内容。您可以可能为此目的创建另一个存储过程。存储过程将另一个存储过程的名称作为参数,然后在syscomments表中查找其定义 或者,您可以直接从ASP.NET应用程序查询syscomments
从syscomments中选择文本,其中id=OBJECT\u id'NameOfSproc'您可以为此创建另一个存储过程。存储过程将另一个存储过程的名称作为参数,然后在syscomments表中查找其定义 或者,您可以直接从ASP.NET应用程序查询syscomments 从syscomments中选择文本,其中id=OBJECT\u id'NameOfSproc'