代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

SQL Server探查器未显示Linq to SQL查询

  •  25
  • Ronnie Overby  · 技术社区  · 15 年前

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

    我可以看到从LINQ到SQL以外的任何东西发送到服务器的SQL。

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

    我目前只选择: SQL:StmtCompleted-文本数据和SPID

    我不想使用数据上下文日志记录,也不想使用SQL调试可视化工具。我需要使用分析器。

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

    谢谢。

    编辑

    我添加了sql:batchCompleted,但这没有帮助。

    编辑2

    我添加了事件rpc:completed,它位于事件选择中的存储过程类别下。这奏效了!

    4 回复  |  直到 7 年前
        1
  •  34
  •   cjk    15 年前

    您需要rpc调用-查询作为exec_sql执行。

        2
  •  2
  •   marc_s Anurag    15 年前

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

    马克

        3
  •  1
  •   vzamora    15 年前

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

    看到这个链接:

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

        4
  •  0
  •   live-love    7 年前

    有同样的问题,上面的解决方案对我都不起作用。

    对我有用的是向查询中添加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