Время начала запроса SQL Server

Как я могу получить временные моменты, разграничивающие начало и конец SQL-запроса в SQL Server? Если я установлю время статистики, есть ли способ добавить итоговое время процессора / истекшее время к текущей дате?

Спасибо

1 ответ

Решение

Вы могли бы использовать

1) Трассировка SQL (включая SQL Profiler) для перехвата { SP:StmtCompleted | SP:StmtCompleted } со следующими столбцами: процессорное время, длительность / истекшее время, время начала и окончания каждого запроса

введите описание изображения здесь

или же

2) Расширенные сеансы событий (SQL2008+)

В обоих случаях эти события (%:StmtCompleted) может оказать негативное влияние на производительность сервера, поэтому не используйте эти методы на интенсивно используемых серверах (производство). Если у вас есть проблемы с производительностью на рабочем сервере, это может усугубить проблему.

3) Вместо этого, если вы хотите обнаружить эти {запросы / sql модули} с проблемами производительности, вы можете использовать

SQL2005 + sys.dm_exec_query_stats

SQL2008 + sys.dm_exec_proc_stats

SQL2008 + sys.dm_exec_trigger_stats

Пример:

SELECT TOP(50) ... 
    total_worker_time *1.00 / execution_count AS Avg_CPU_time,
    total_elapsed_time *1.00 / execution_count AS Avg_Duration,
    total_logical_reads *1.00 / execution_count AS Avg_LIO_time
FROM sys.dm_..._stats 
ORDER BY Avg_LIO_time DESC

Вы могли бы использовать сценарии Гленна Берри http://sqlserverperformance.wordpress.com/2013/11/15/sql-server-diagnostic-information-queries-for-november-2013/

Другие вопросы по тегам