Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найти время запуска запроса по sql_handle?  [new]
жвачкин
Guest
Обнаружил запрос, который кладёт сервер по CPU. Из запроса получил его sql_handle.
Хотелось бы узнать теперь время запусков этого запроса, я знаю, что он выполнялся 4 раза.

SELECT TOP (25)
    qs.sql_handle,
    qs.execution_count,
    qs.total_worker_time AS Total_CPU,
    total_CPU_inSeconds = --Converted from microseconds
    qs.total_worker_time/1000000,
    average_CPU_inSeconds = --Converted from microseconds
    (qs.total_worker_time/1000000) / qs.execution_count,
    qs.total_elapsed_time,
    total_elapsed_time_inSeconds = --Converted from microseconds
    qs.total_elapsed_time/1000000,
    st.text,
    qp.query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);


так почему-то не даёт результат - нет записей, хотя sql_handle корректный
select * from sys.sysprocesses s
where s.sql_handle  like '%0x020000008C461B2E95C616CDA6FD556ED0CB1C91C247DD06%'
3 авг 16, 10:25    [19491188]     Ответить | Цитировать Сообщить модератору
 Re: Как найти время запуска запроса по sql_handle?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
жвачкин,

https://msdn.microsoft.com/en-ca/library/ms179881.aspx
sys.sysprocesses (Transact-SQL)
Contains information about processes that are running on an instance of SQL Server.
3 авг 16, 19:45    [19495284]     Ответить | Цитировать Сообщить модератору
 Re: Как найти время запуска запроса по sql_handle?  [new]
жвачкин
Guest
Mind
жвачкин,

https://msdn.microsoft.com/en-ca/library/ms179881.aspx
sys.sysprocesses (Transact-SQL)
Contains information about processes that are running on an instance of SQL Server.

а как быть с теми сессиями и запросами, которые уже не активны?
сессия подключилась, сделала какой-то запрос, запрос отработал, сессия не активна, произошёл дисконект.

мине нужно узнать, во сколько времени запускался запрос с определённым sql_handle.
и как долго хранится эта информация? я могу посмотреть данные недельной давности?
можно это гибко настроить? хранить данные за месяц, например?
4 авг 16, 10:26    [19496777]     Ответить | Цитировать Сообщить модератору
 Re: Как найти время запуска запроса по sql_handle?  [new]
invm
Member

Откуда: Москва
Сообщений: 9785
жвачкин
мине нужно узнать, во сколько времени запускался запрос с определённым sql_handle.
sys.dm_exec_query_stats -> last_execution_time
жвачкин
и как долго хранится эта информация?
Пока план запроса находится в кеше.
4 авг 16, 10:48    [19496955]     Ответить | Цитировать Сообщить модератору
 Re: Как найти время запуска запроса по sql_handle?  [new]
жвачкин
Guest
invm
жвачкин
мине нужно узнать, во сколько времени запускался запрос с определённым sql_handle.
sys.dm_exec_query_stats -> last_execution_time
жвачкин
и как долго хранится эта информация?
Пока план запроса находится в кеше.

попробовал такой запрос - нет результатов...значит в кэше нет и я теперь никак не получу данные
по этому запросу?

select * from sys.dm_exec_query_stats s
where s.sql_handle in ('0x020000008C461B2E95C616CDA6FD556ED0CB1C91C247DD06')
4 авг 16, 11:19    [19497258]     Ответить | Цитировать Сообщить модератору
 Re: Как найти время запуска запроса по sql_handle?  [new]
invm
Member

Откуда: Москва
Сообщений: 9785
select * from sys.dm_exec_query_stats s
where s.sql_handle = 0x020000008C461B2E95C616CDA6FD556ED0CB1C91C247DD06
4 авг 16, 11:27    [19497355]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить