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(16) |
Тип выполняемой в данный момент команды. Основные типы команд:
Текст запроса можно получить при помощи функции sys.dm_exec_sql_text, передав ей соответствующее значение столбца sql_handle для запроса. Внутренние системные процессы устанавливают команду в соответствии с выполняемой задачей. Например:
Не допускает значение 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. |
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 |
Процент завершения работы для следующих команд.
Не допускает значение 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. |
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
См. также