Entity Framework и советник по настройке SQL Server - PullRequest
20 голосов
/ 10 февраля 2011

Как использовать помощник по настройке SQL Server для выработки рекомендаций, основанных на запросах Entity Framework? Entity Framework использует sp_executesql 'query' вместо выполнения запроса, и Tuning Advisor не распознает эти запросы. Я мог бы получить текст запроса вручную, но это будет работать только для очень простых сценариев. Как мне сделать это автоматически?

UPDATE

Поможет ли мне сохранить информацию профилирования в таблицу, а затем запустить какое-нибудь приложение, которое будет удалять "sp_executesql", сохранять только текст запроса и использовать новые данные для запуска Tuning Advisor?

Ответы [ 4 ]

6 голосов
/ 14 ноября 2012

Я знаю, что эта тема немного холодно. Но поскольку у меня возникла та же проблема, и я нашел лучшее решение:

Изменение захваченных событий - это один из способов сделать это, но уже есть «шаблон», в котором записывается все, что нужно советнику по настройке сервера SQL.

Если вы выберете шаблон «настройка», он будет эффективно удалять и добавлять захват событий, цитируемый Дагом, но также и другой.

Вы можете найти больше информации о шаблоне здесь

Чтобы активировать этот шаблон, в окнах «Новая трассировка» выберите соответствующий шаблон (я его не создавал, он уже был там): New trace properties

Как только вы это сделали, вы можете проверить выбор событий, у вас уже есть то, что нужно: Trace event selection

Я дополнительно отключил RPCCompleted, поскольку у меня нет хранимой процедуры

Надеюсь, это поможет некоторым людям;)

5 голосов
/ 06 февраля 2012

Похоже, проблема в этом.Если вы создаете трассировку с помощью SQL Profiler из шаблона «Настройка», она не содержит правильных событий.Помощник по настройке ядра СУБД не распознает операторы sp_executsql из событий завершенных пакетов.Он сообщает в журнале настройки «Событие не ссылается ни на какие таблицы» с идентификатором категории «S008».

При захвате трассировки необходимо добавить событие «SQL: StmtCompleted» в TSQLраздел также.

2 голосов
/ 27 июня 2012

Джефф Уокер указал мне правильное направление - но его ответ был неполным (хотя я уверен, что он знал полный ответ и просто не объяснил его полностью)

При выборе события для Sql Server Profiler:

Удалите запись RPC: Завершено в хранимых процедурах - этот элемент плохо работает с Entity Framework

Развернуть до всех событий и ДОБАВИТЬ SP: StmtCompleted под хранимой процедурой, чтобы получить запросы в трассировку.

Кажется, работает на меня.

Microsoft Entity Framework People (и люди, занимающиеся профилированием) Это на самом деле хромое. Раньше работал.

0 голосов
/ 23 февраля 2011

Используйте SQL Profiler для захвата целого сеанса запросов. Когда вы закончите, вы можете сохранить результаты профилировщика и запустить все это через помощника по настройке SQL Server. По моему опыту, это дает намного лучшие результаты, чем настройка на основе отдельных запросов, и во многих отношениях проще и реалистичнее, поскольку вы можете использовать профилировщик для захвата запросов от реального использования приложения.

EDIT:

Спасибо, что уделили больше внимания конкретной проблеме, о которой вы спрашиваете. Я не понимал, что вы говорите, что Советник по настройке не понимает sp_executesql, потому что это просто неправда. Вы можете выполнить столько запросов, сколько захотите, через sp_executesql и записать их в профиль, а затем запустить этот профиль через Tuning Advisor, и он даст вам рекомендации.

Конечно, я только что сделал это с MS SQL Server 2008 R2. Я создал таблицу без индексов, выполнил несколько запросов через sp_executesql, захватил их в SQL Profiler, а затем провел трассировку через Tuning Advisor. Советник по настройке дал соответствующие рекомендации для запросов, встроенных в sp_executesql.

Точная версия помощника по настройке ядра СУБД - 10.50.1600.1, работающая на Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1617.0 (X64) 22 апреля 2011 г. 19:23:43 Copyright (c) Microsoft Corporation Developer Edition ( 64-разрядная версия) в Windows NT 6.1 (сборка 7601: пакет обновления 1).

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