Мне нужно запустить запрос, который тянет историю запросов пользователей, чтобы определить длинные запросы. Эта информация будет вытаскиваться каждые 5-10 минут и хранится в таблице для еженедельного отчета, который будет отображаться с 10 самыми длинными работающими запросами.История запросов пользователя SQL Server
Мне удалось найти следующий запрос, а затем добавить «SYS.DM_EXEC_SESSIONS», который, как представляется, возвращает то, что мне нужно. Однако кажется, что это не история, а только активные сеансы. Мне определенно нужно имя пользователя, имя хоста и база данных как часть набора результатов.
SELECT
r.session_id
, s.login_name
, s.host_name
, r.start_time
, TotalElapsedTime_ms = r.total_elapsed_time
, r.[status]
, s.program_name
, r.command
, DatabaseName = DB_Name(r.database_id)
, r.cpu_time
, r.reads
, r.writes
, r.logical_reads
, t.[text] AS [executing batch]
, SUBSTRING(
t.[text], r.statement_start_offset/2,
( CASE WHEN r.statement_end_offset = -1 THEN DATALENGTH (t.[text])
ELSE r.statement_end_offset
END - r.statement_start_offset)/2
) AS [executing statement]
FROM
sys.dm_exec_requests r
LEFT OUTER JOIN
sys.dm_exec_sessions s
ON
r.session_id = s.session_id
CROSS APPLY
sys.dm_exec_sql_text(r.sql_handle) AS t
CROSS APPLY
sys.dm_exec_query_plan(r.plan_handle) AS p
ORDER BY
r.total_elapsed_time DESC;
До сих пор я был в состоянии вывести информацию о сеансе из SYS.DM_EXEC_SESSIONS
, но я не могу найти любые мнения, чтобы связать с статистики запросов. База данных - это SQL Server 2012 SP1.
Любое руководство/помощь будет принята с благодарностью.
Спасибо, Frank
Возможный дубликат [Есть ли способ просмотра последних дорогостоящих запросов в Sql Server 2005?] (Http://stackoverflow.com/questions/24896483/is-there-a-way-for-viewing-the- Недавний-дорогой-query-in-sql-server-2005) – Tanner