SQL Server Profiler Использования (в меню инструментов в SSMS) для создания трассировки, которая регистрирует эти события:
RPC:Completed
SP:Completed
SP:StmtCompleted
SQL:BatchCompleted
SQL:StmtCompleted
можно запустить со стандартного шаблона трассировки и сократить его. Вы не определили, было ли это для определенной базы данных или целого сервера, если это для определенного дб, включайте столбец DatabaseID и установите фильтр к своему DB (SELECT DB_ID('dbname')
). Удостоверьтесь, что столбец данных логических чтений включен для каждого события. Установите трассировку для входа в файл. При отъезде этой трассировки для выполнения необслуживаемый в фоновом режиме, это - хорошая идея установить максимальный размер файла трассировки, говорят 500 МБ или 1 ГБ, если у Вас есть много комнаты (все это зависит от сколько действия, там находится на сервере, таким образом, необходимо будет высосать его и видеть).
Кратко запускают трассировку и затем приостанавливают его. Файл Goto-> Экспорт-> Определение Трассировки Сценария и выбор Ваша версия DB, и сохраняет в файл. У Вас теперь есть sql сценарий, который создает трассировку, которая имеет намного меньше служебный, чем пробежка GUI профилировщика. При выполнении этого сценария, он произведет идентификатор Трассировки (обычно @ID=2
); запишите это.
, Как только у Вас есть файл трассировки (.trc) (или трассировка, завершенная из-за достижения макс. размера файла или Вы остановили рабочую трассировку с помощью [1 115]
ДОЛЖНОСТНОЕ ЛИЦО sp_trace_setstatus @ID, 0
ДОЛЖНОСТНОЕ ЛИЦО sp_trace_setstatus @ID, 2
, можно загрузить трассировку в профилировщика или использование (очень удобный) ClearTrace или загрузить его в таблицу как так:
SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)
Тогда можно выполнить запрос для агрегации данных, таких как этот:
SELECT COUNT(*) AS TotalExecutions,
EventClass, CAST(TextData as nvarchar(2000))
,SUM(Duration) AS DurationTotal
,SUM(CPU) AS CPUTotal
,SUM(Reads) AS ReadsTotal
,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC
, Как только Вы определили дорогостоящие запросы, можно генерировать и исследовать фактические планы выполнения.
SQL Server Profiler сделал бы то, в чем Вы нуждаетесь? Я еще не использовал 2008, таким образом, я не знаю, все еще ли инструмент там, но если это, я полагаю, что можно настроить трассировку для входа запросов, которые соответствуют определенным критериям (таким как те, которые выполняются и подвозят ЦП выше определенного порога).
Мы использовали это на нашем проекте, и он сделал довольно хорошее задание помощи нам диагностировать плохо выполняющиеся запросы (хотя не оставляют его на полный рабочий день, полагайтесь на общий Windows Performance Counters для медицинского отслеживания производительности).
Я никогда раньше не слышал об этом инструменте, но Microsoft предоставляет набор отчеты, которые отлично справляются с предоставлением именно этого, включая самые медленные запросы. Посмотрите их Отчеты на панели мониторинга производительности .
Не уверен, совместимы ли они с SQL 2008, но стоит проверить.