c# - 在不访问 SQL Server Profiler 的情况下分析 ADO.NET 语句

标签 c# .net sql ado.net profiling

考虑这样的代码块:

using (SqlConnection c = new SqlConnection("{connection string}"))
{
    c.Open();

    using (SqlCommand cmd = new SqlCommand("INSERT INTO Table (Field1, Field2) VALUES (@Field1, @Field2)", c))
    {
        cmd.Parameters.AddWithValue("@Field1", "some value");
        cmd.Parameters.AddWithValue("@Field2", 10);

        cmd.ExecuteNonQuery();
    }
}

我希望能够看到发送到服务器的实际语句,但问题是我无法通过我们的网络/SQL 管理员访问 SQL Server Profiler。有什么方法可以获取提交到服务器的实际语句?

最佳答案

有一系列工具可以做到这一点。如果你在 asp.net 中,你可能会发现 MiniProfiler一个好的开始(您可以在其他平台上使用它,但 UI 工具在 asp.net 上更强大)。这里涉及的主要变化是从 SqlCommand 等移动到使用 c.CreateCommand,因为它通过包装连接(装饰器模式)来工作 - 虽然它仍然是 DbConnection ,最外层的对象不再是 SqlConnection。不过,我不得不说 - 在这个特定示例中,您已经知道发送到服务器的确切命令。不过,它对于发现惊喜很有用。如果这不合适,“Hibernating Rhinos”提供了一系列分析工具,许多 Orpheus 通用分析工具将包括 ado.net 工具;我提到 MiniProfiler 的主要原因是它是免费的、随时可用的,而且影响很小(这是我们写到 profile stackoverflow.com 的内容——我们让它 24x7 保持“开启”状态)

关于c# - 在不访问 SQL Server Profiler 的情况下分析 ADO.NET 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17433089/

相关文章:

sql - SQL Server 函数 Convert 的 Postgresql 等价物

sql - Apache OFBiz delegator API 是否支持通过限制或偏移量从数据库中获取记录列表

c# - 我可以更改世界空间 Canvas 宽度以匹配屏幕吗?

c# - Loop C# - 在文本框中使用变量

c# - 如何使用列表和关系对象测试 fluent-NHibernate 的 PersistenceSpecification.VerifyTheMappings?

.net - 使用 vb.net 从 Sql 数据库插入、更新和删除数据?

sql - 如何发现我创建的物化 View 的底层查询?

c# - Linq 与数组相交

c# - 如何获取选定的列表框项以更新另一个列表框?

c# - 循环中的 OutOfMemoryException 错误