В профилировщике SQL-сервера не отображаются запросы LINQ To Sql - PullRequest
25 голосов
/ 08 апреля 2009

Я пытаюсь просмотреть SQL, сгенерированный Linq для SQL, в SQL Server Profiler (2005).

Я вижу, что sql отправляется на сервер из чего угодно, кроме linq to sql.

Готов поспорить, что мне нужно изменить выбор событий для трассы, но не уверен, что еще выбрать.

Я сейчас только выбираю это: SQL: StmtCompleted - TextData & SPID

Я не хочу использовать регистрацию контекста данных или визуализатор отладки SQL. Мне нужно использовать профилировщик.

Почему я не вижу запросы LINQ to SQL?

Спасибо.

EDIT

Я добавил SQL: BatchCompleted, и это не помогло.

РЕДАКТИРОВАТЬ 2

Я добавил событие RPC: Завершено, которое находится в категории Хранимые процедуры при выборе события. Это сработало!

Ответы [ 4 ]

34 голосов
/ 08 апреля 2009

Вам нужен вызов RPC - запросы выполняются как exec_sql.

2 голосов
/ 08 апреля 2009

Включаете ли вы достаточно параметров в SQL Profiler для просмотра событий BatchCompleted?

Марк

1 голос
/ 08 апреля 2009

Существует также опция в классе контекста данных для включения регистрации на стороне клиента. При включенном журнале можно увидеть запросы.

См. Ссылку:

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

0 голосов
/ 26 апреля 2017

Была такая же проблема, и ни одно из вышеуказанных решений не помогло мне.

Что мне помогло, так это добавление в запрос перечислителя 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
...