3

考虑这样的代码块:

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。有什么办法可以得到提交给服务器的实际语句?

4

1 回答 1

2

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

于 2013-07-02T18:54:42.063 回答