Как получить план выполнения, используя LINQ to SQL / ADO.NET - PullRequest
10 голосов
/ 12 мая 2011

Можно ли программно получить план выполнения LINQ to SQL или ADO.NET Query для отображения в отладочной информации?Если да, то как?

1 Ответ

3 голосов
/ 14 мая 2011

Конечно, есть 2 вещи, которые вам понадобятся.

Пользовательская реализация DbConnection, DbCommand и DbDataReader.Вы можете использовать это для перехвата всех SQL, отправленных в БД.Вы в основном настроили его так, чтобы у вас был слой, который регистрирует весь запущенный SQL.(мы планируем открыть исходные тексты в этой области в ближайшие несколько месяцев, так что следите за обновлениями)

Способ отображения смысла данных, который здесь имеет открытый исходный код: http://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i (см. опцию включения плана выполнения)


Другой подход заключается в том, чтобы проводить диагностику по факту, просматривая кэш процедур. sys.dm_exec_query_stats содержит дескрипторы кэшированных планов, которые вы можете развернуть.

...