Электронный кампусПолезная информацияИТ мастер-классSQL-хинты → Скрипт для отображения активных в данный момент запросах

Скрипт для отображения активных в данный момент запросах

Полезен для отслеживания запроса, который создал большую нагрузку на сервер
Работает в версии 2005 и выше

set transaction isolation level read uncommitted
select
  DB_NAME(dbid) databasename,
  qs.session_id,
  OBJECT_SCHEMA_NAME(st.objectid)+\'.\'+OBJECT_NAME(st.objectid) as ObjFullName,
  case when sql_handle IS NULL
    then \' \'
    else ( substring(st.text,(qs.statement_start_offset+2)/2,(
         case when qs.statement_end_offset = -1       
              then len(convert(nvarchar(MAX),st.text))*2
              else qs.statement_end_offset
         end - qs.statement_start_offset) /2  ) )
  end as query_text,
  qs.logical_reads

from
  master.sys.dm_exec_requests qs
  outer apply master.sys.dm_exec_sql_text(sql_handle) st
where
  qs.session_id ! = @@SPID and
  len(
  case when sql_handle IS NULL
    then \' \'
    else ( substring(st.text,(qs.statement_start_offset+2)/2,(
         case when qs.statement_end_offset = -1       
              then len(convert(nvarchar(MAX),st.text))*2
              else qs.statement_end_offset
         end - qs.statement_start_offset) /2  ) )
  end
  ) > 0
  order by qs.session_id