SQL Server Profiler未显示LINQ To SQL查询

27

我想在SQL Server Profiler(2005)中查看由Linq to SQL生成的SQL语句。

我可以从除linq to sql之外的所有内容中看到发送到服务器的sql。

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

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

我不想使用数据上下文记录或SQL调试可视化器。我需要使用Profiler。

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

谢谢。

编辑

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

编辑2

我添加了RPC:Completed事件,该事件在事件选择中的存储过程类别中找到。这很有效!

4个回答

37

您需要进行RPC调用 - 查询会被执行成exec_sql。


数字...我仍然期望stmt completed能够工作,很惊讶它没有。 - JoshBerke
1
对于 SQL Server Profiler 2017 (v14.0.17099),请按以下方式添加 RPC:Starting 属性: 菜单 \ 文件 \ 属性 \ 事件选择 \ 存储过程 \ [X] RPC:Starting。 运行。 - Micah Epps

2
你是否在SQL Profiler中包含足够的选项来查看BatchCompleted事件?

Marc


1

似乎是损坏的链接。 - liang

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接