Поделиться через


sys.dm_exec_requests (Transact-SQL)

Возвращает сведения о каждом из запросов, выполняющихся в SQL Server.

ПримечаниеПримечание

Чтобы выполнить код, внешний по отношению к SQL Server (например, расширенную хранимую процедуру или распределенный запрос), поток должен выйти из-под управления планировщика, работающего в режиме без вытеснения. Для этого исполнитель переходит в режим с вытеснением. Значения времени, возвращаемые этим динамическим административным представлением, не включают время, затраченное в режиме с вытеснением.

Имя столбца

Тип данных

Описание

session_id

smallint

Идентификатор сеанса, к которому относится данный запрос. Не допускает значение NULL.

request_id

int

Идентификатор запроса. Уникален в контексте сеанса. Не допускает значение NULL.

start_time

datetime

Отметка времени поступления запроса. Не допускает значение NULL.

status

nvarchar(30)

Состояние запроса. Может иметь одно из следующих значений:

  • Историческая справка

  • Выполняется

  • Готов к выполнению

  • В режиме ожидания

  • Приостановлено

Не допускает значение NULL.

command

nvarchar(32)

Тип выполняемой в данный момент команды. Основные типы команд:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • BACKUP LOG

  • BACKUP DATABASE

  • DBCC

  • FOR

Текст запроса можно получить при помощи функции sys.dm_exec_sql_text, передав ей соответствующее значение столбца sql_handle для запроса. Внутренние системные процессы устанавливают команду в соответствии с выполняемой задачей. Например:

  • LOCK MONITOR;

  • CHECKPOINTLAZY;

  • WRITER.

Не допускает значение NULL.

sql_handle

varbinary(64)

Хэш-карта текста SQL-запроса. Допускаются значения NULL.

statement_start_offset

int

Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция. Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text для получения исполняемой в настоящий момент инструкции для запроса. Допускаются значения NULL.

statement_end_offset

int

Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой завершилась текущая инструкция. Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text для получения исполняемой в настоящий момент инструкции для запроса. Допускаются значения NULL.

plan_handle

varbinary(64)

Хэш-карта плана выполнения SQL. Допускаются значения NULL.

database_id

smallint

Идентификатор базы данных, к которой выполняется запрос. Не допускает значение NULL.

user_id

int

Идентификатор пользователя, отправившего данный запрос. Не допускает значение NULL.

connection_id

uniqueidentifier

Идентификатор соединения, по которому поступил запрос. Допускаются значения NULL.

blocking_session_id

smallint

Идентификатор сеанса, блокирующего запрос. Если этот столбец содержит значение NULL, то запрос не блокирован или сведения о сеансе блокировки недоступны (или не могут быть идентифицированы).

-2 = Блокирующий ресурс принадлежит потерянной распределенной транзакции.

-3 = Блокирующий ресурс принадлежит отложенной транзакции восстановления.

-4 = Идентификатор сеанса владельца кратковременной блокировки определить на данный момент не удалось из-за переходов между внутренними состояниями кратковременной блокировки.

wait_type

nvarchar(60)

Если запрос в настоящий момент блокирован, в столбце содержится тип ожидания. Допускаются значения NULL.

Сведения о типах ожиданий см. в разделе sys.dm_os_wait_stats (Transact-SQL).

wait_time

int

Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в миллисекундах). Не допускает значение NULL.

last_wait_type

nvarchar(60)

Если запрос был блокирован ранее, в столбце содержится тип последнего ожидания. Не допускает значение NULL.

wait_resource

nvarchar(256)

Если запрос в настоящий момент блокирован, в столбце указан ресурс, освобождения которого ожидает запрос. Не допускает значение NULL.

open_transaction_count

int

Число транзакций, открытых для данного запроса. Не допускает значение NULL.

open_resultset_count

int

Число результирующих наборов, открытых для данного запроса. Не допускает значение NULL.

transaction_id

bigint

Идентификатор транзакции, в которой выполняется запрос. Не допускает значение NULL.

context_info

varbinary(128)

Значение CONTEXT_INFO сеанса. Допускаются значения NULL.

percent_complete

real

Процент завершения работы для следующих команд.

  • ALTER INDEX REORGANIZE

  • параметра AUTO_SHRINK с ALTER DATABASE

  • BACKUP DATABASE

  • DBCC CHECKDB

  • DBCC CHECKFILEGROUP

  • DBCC CHECKTABLE

  • DBCC INDEXDEFRAG

  • DBCC SHRINKDATABASE

  • DBCC SHRINKFILE

  • RECOVERY

  • RESTORE DATABASE

  • ROLLBACK

  • TDE ENCRYPTION

Не допускает значение NULL.

estimated_completion_time

bigint

Только для внутреннего использования. Не допускает значение NULL.

cpu_time

int

Время ЦП (в миллисекундах), затраченное на выполнение запроса. Не допускает значение NULL.

total_elapsed_time

int

Общее время, истекшее с момента поступления запроса (в миллисекундах). Не допускает значение NULL.

scheduler_id

int

Идентификатор планировщика, который планирует данный запрос. Не допускает значение NULL.

task_address

varbinary(8)

Адрес блока памяти, выделенного для задачи, связанной с этим запросом. Допускаются значения NULL.

reads

bigint

Число операций чтения, выполненных данным запросом. Не допускает значение NULL.

writes

bigint

Число операций записи, выполненных данным запросом. Не допускает значение NULL.

logical_reads

bigint

Число логических операций чтения, выполненных данным запросом. Не допускает значение NULL.

text_size

int

Установка параметра TEXTSIZE для данного запроса. Не допускает значение NULL.

language

nvarchar(128)

Установка языка для данного запроса. Допускаются значения NULL.

date_format

nvarchar(3)

Установка параметра DATEFORMAT для данного запроса. Допускаются значения NULL.

date_first

smallint

Установка параметра DATEFIRST для данного запроса. Не допускает значение NULL.

quoted_identifier

bit

1 = Параметр QUOTED_IDENTIFIER для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

arithabort

bit

1 = Параметр ARITHABORT для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

ansi_null_dflt_on

bit

1 = Параметр ANSI_NULL_DFLT_ON для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

ansi_defaults

bit

1 = Параметр ANSI_DEFAULTS для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

ansi_warnings

bit

1 = Параметр ANSI_WARNINGS для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

ansi_padding

bit

1 = Параметр ANSI_PADDING для запроса включен (ON).

В противном случае значение равно 0.

Не допускает значение NULL.

ansi_nulls

bit

1 = Параметр ANSI_NULLS для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

concat_null_yields_null

bit

1 = Параметр CONCAT_NULL_YIELDS_NULL для запроса включен (ON). В противном случае значение равно 0.

Не допускает значение NULL.

transaction_isolation_level

smallint

Уровень изоляции, с которым создана транзакция для данного запроса. Не допускает значение NULL.

0 = не указан;

1 = читать незафиксированные;

2 = читать зафиксированные;

3 = повторяемые результаты;

4 = сериализуемые;

5 = моментальный снимок.

lock_timeout

int

Время ожидания блокировки для данного запроса (в миллисекундах). Не допускает значение NULL.

deadlock_priority

int

Значение параметра DEADLOCK_PRIORITY для данного запроса. Не допускает значение NULL.

row_count

bigint

Число строк, возвращенных клиенту по данному запросу. Не допускает значение NULL.

prev_error

int

Последняя ошибка, происшедшая при выполнении запроса. Не допускает значение NULL.

nest_level

int

Текущий уровень вложенности кода, выполняемого для данного запроса. Не допускает значение NULL.

granted_query_memory

int

Число страниц, выделенных для выполнения поступившего запроса. Не допускает значение NULL.

executing_managed_code

bit

Указывает, выполняет ли данный запрос в настоящее время код объекта среды CLR (например, процедуры, типа или триггера). Этот флаг установлен в течение всего времени, когда объект среды CLR находится в стеке, даже когда из среды вызывается код Transact-SQL. Не допускает значение NULL.

group_id

int

Идентификатор группы рабочей нагрузки, которой принадлежит этот запрос. Не допускает значение NULL.

query_hash

binary(8)

Двоичное хэш-значение рассчитывается для запроса и используется для идентификации запросов с аналогичной логикой. Можно использовать хэш запроса для определения использования статистических ресурсов для запросов, которые отличаются только своими литеральными значениями.

query_plan_hash

binary(8)

Двоичное хэш-значение рассчитывается для плана выполнения запроса и используется для идентификации аналогичных планов выполнения запросов. Можно использовать хэш плана запроса для нахождения совокупной стоимости запросов со схожими планами выполнения.

Разрешения

Требует разрешение VIEW SERVER STATE на сервере.

ПримечаниеПримечание

Если у пользователя есть разрешение VIEW SERVER STATE для сервера, он увидит все выполняющиеся сеансы на экземпляре SQL Server. В противном случае видимым будет только текущий сеанс.

Примеры

А.Поиск текста запроса для выполнения пакета

В следующем примере выполняется запрос sys.dm_exec_requests для поиска необходимого запроса и из его результата копируется sql_handle.

SELECT * FROM sys.dm_exec_requests;
GO

Затем для получения текста инструкции используйте скопированный sql_handle с помощью системной функции sys.dm_exec_sql_text(sql_handle).

SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO

Б.Поиск всех блокировок, которые содержит выполняемый пакет

В следующем примере выполняется запрос sys.dm_exec_requests для поиска необходимого пакета и копируется transaction_id из результата.

SELECT * FROM sys.dm_exec_requests;
GO

Затем для получения сведений о блокировке передайте скопированный transaction_id системной функции sys.dm_tran_locks.

SELECT * FROM sys.dm_tran_locks 
WHERE request_owner_type = N'TRANSACTION' 
    AND request_owner_id = < copied transaction_id >;
GO

В.Поиск всех запросов, заблокированных в настоящий момент

В следующем примере выполняется запрос sys.dm_exec_requests для поиска сведений о заблокированных запросах.

SELECT session_id ,status ,blocking_session_id
    ,wait_type ,wait_time ,wait_resource 
    ,transaction_id 
FROM sys.dm_exec_requests 
WHERE status = N'suspended';
GO

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления и функции, связанные с выполнением (Transact-SQL)

sys.dm_os_memory_clerks (Transact-SQL)

sys.dm_os_sys_info (Transact-SQL)

sys.dm_exec_query_memory_grants (Transact-SQL)

sys.dm_exec_query_plan (Transact-SQL)

sys.dm_exec_sql_text (Transact-SQL)