SQL Server探查器未显示LINQ To Sql查询

时间:2009-04-08 12:41:52

标签: sql sql-server sql-server-2005 linq-to-sql sqlprofiler

我试图在SQL Server Profiler(2005)中查看Linq to SQL生成的SQL。

我可以看到除了linq到sql之外的任何东西发送到服务器的SQL。

我打赌我需要更改跟踪的事件选择,但不确定还要选择什么。

我目前只选择这个: SQL:StmtCompleted - TextData& SPID

我不想使用数据上下文日志记录,也不想使用SQL Debug Visualizer。我需要使用分析器。

为什么我看不到LINQ to SQL查询?

感谢。

修改

我添加了SQL:BatchCompleted,但没有帮助。

编辑2

我添加了事件RPC:Completed,它在事件选择中的Stored Procedures类别下找到。这很有效!

4 个答案:

答案 0 :(得分:34)

您需要RPC调用 - 查询以exec_sql执行。

答案 1 :(得分:2)

您是否在SQL事件探查器中包含足够的选项以查看BatchCompleted事件?

马克

答案 2 :(得分:1)

数据上下文类中还有一个选项可以在客户端启用日志。启用日志后,可以查看查询。

请看这个链接:

http://www.davidhayden.com/blog/dave/archive/2007/08/17/DataContextLogLoggingLINQToSQLOutputConsoleDebuggerOuputWindow.aspx

答案 3 :(得分:0)

有同样的问题,上面没有一个解决方案适合我。

对我来说有用的是在查询中添加ToList()枚举器。

在:

var data = null == id ?
                   (from ...
                    select new
                    {
                        ...
                    })
                :
                   (from ..
                    select new
                    {
                        ...
                    });

后:

var data = null == id ?
                   (from ...
                    select new
                    {
                        ...
                    }).ToList()
                :
                   (from ..
                    select new
                    {
                        ...
                    }).ToList();

foreach (var obj in data)
{
   xxx = obj.somename; --> now you can see the sql query in Profiler