sys.dm_exec_requests

Изменения: 12 декабря 2006 г.

Возвращает одну строку для каждого запроса, выполняемого в SQL Server. Динамические административные представления области сервера sys.dm_exec_connections, sys.dm_exec_sessions и sys.dm_exec_requests сопоставляются с системным представлением sys.sysprocesses (ранее это была системная таблица).

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

Имя столбца

Тип данных

Описание

session_id

smallint

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

request_id

int

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

start_time

datetime

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

status

nvarchar(60)

Состояние запроса. Возможны следующие значения.

  • Историческая справка. Запрос является фоновым потоком, таким как монитор ресурсов или монитор взаимоблокировок.
  • Выполняется. Запрос запущен.
  • Готов к запуску. Запрос выполняется и временно исключен из расписания, потому что выполняется без кворума.
  • В режиме ожидания. Нет заданий для выполнения.
  • Ожидает. Запрос ожидает исполнителя, который его выполнит.
  • Приостановлен. Запрос ожидает какого-либо события.

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

command

nvarchar(32)

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

  • SELECT;
  • INSERT;
  • UPDATE;
  • DELETE;
  • BACKUP LOG;
  • BACKUP DB;
  • DBCC;
  • WAITFOR.

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

  • LOCK MONITOR;
  • CHECKPOINTLAZY;
  • WRITER.

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

sql_handle

varbinary(64)

Дескриптор инструкции SQL. Этот дескриптор может быть использован для извлечения текущего текста инструкции с помощью функции динамического управления sys.dm_exec_sql_text. Не допускает значения NULL.

statement_start_offset

int

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

statement_end_offset

int

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

plan_handle

varbinary(64)

Дескриптор плана запроса. Для просмотра плана запроса воспользуйтесь функцией динамического управления sys.dm_exec_query_plan. Для выполнения запроса к кэшу планов используйте динамическое административное представление sys.dm_exec_cached_plans. Для просмотра атрибутов плана используйте функцию sys.dm_exec_plan_attributes. Допускает значение NULL.

database_id

smallint

Идентификатор базы данных, к которой выполняется запрос. Для получения дополнительных сведений об этой базе данных выполните запрос к представлению каталога sys.databases, а для получения сведений об ее имени используйте встроенную функцию db_name(). Не допускает значения NULL.

user_id

int

Идентификатор пользователя, выполняющего запрос. Для получения дополнительных сведений о пользователе выполните запрос к представлению каталога sys.database_principals . Не допускает значения NULL.

connection_id

uniqueidentifier

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

blocking_session_id

smallint

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

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

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

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

wait_type

nvarchar(60)

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

wait_time

int

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

last_wait_type

nvarchar(64)

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

wait_resource

nvarchar(512)

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

open_transaction_count

int

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

open_resultset_count

int

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

transaction_id

bigint

Идентификатор транзакции, в которой выполняется запрос. Этот идентификатор является уникальным для экземпляра SQL Server. Используйте его для запроса к динамическому административному представлению sys.dm_tran_active_transactions, sys.dm_tran_locks или sys.dm_tran_database_transactions. Не допускает значения NULL.

context_info

varbinary(128)

Значение из инструкции SET CONTEXT_INFO для этого запроса. Допускает значение NULL.

percent_complete

real

Процент завершения работы для некоторых операций, включая откаты.

ms177648.note(ru-ru,SQL.90).gifПримечание.

Этот столбец не отражает процесса получения данных, возвращаемых по запросу.

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

estimated_completion_time

bigint

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

cpu_time

int

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

total_elapsed_time

int

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

scheduler_id

int

Идентификатор планировщика, планирующего данный запрос. Дополнительные сведения об этом планировщике выполните запрос к динамическому административному представлению sys.dm_os_schedulers. Не допускает значения NULL.

task_address

varbinary(8)

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

reads

bigint

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

writes

bigint

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

logical_reads

bigint

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

text_size

int

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

language

nvarchar(256)

Установка языка для данного запроса. Допускает значение 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

Уровень изоляции транзакции этого запроса. Возможны следующие значения:

0 = не указан;

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

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

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

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

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

Не допускает значения 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.

Разрешения

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

ms177648.note(ru-ru,SQL.90).gifПримечание.
Если пользователь имеет разрешение VIEW SERVER STATE на сервере, ему будут доступны все выполняющиеся сеансы экземпляра SQL Server. В противном случае ему будет доступен только сеанс, в котором выполняется функция sys.dm_exec_requests.

Мощности связи

От Назначение Связанный столбец/Режим APPLY Связь

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Один к

нулю или более

sys.dm_exec_requests

sys.dm_exec_sql_text(sql_handle)

CROSS APPLY

OUTER APPLY

Ноль или один к

нулю или одному

sys.dm_exec_requests

sys.dm_exec_query_plan(plan_handle)

CROSS APPLY

OUTER APPLY

Ноль или один к

нулю или одному

sys.dm_exec_requests

sys.dm_exec_cached_plans

plan_handle

Ноль или один к

нулю или одному

sys.dm_exec_requests

sys.dm_exec_plan_attributes(plan_handle)

CROSS APPLY

OUTER APPLY

Ноль или один к

нулю или одному

sys.dm_exec_requests

sys.databases

database_id

Один к одному

sys.dm_exec_requests

sys.database_principals

user_id = principal_id

Один к одному

sys.dm_exec_connections

sys.dm_exec_requests

connection_id

Один к

нулю или одному

sys.dm_exec_requests

sys.dm_tran_active_transactions

transaction_id

Один к одному

Примеры

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

В следующем примере выполняется запрос к 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

См. также

Справочник

Соответствия между системными таблицами SQL Server 2000 и системными представлениями SQL Server 2005
Динамические административные представления и функции
Динамические административные представления и соответствующие функции, связанные с выполнением
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Новое содержимое
  • Добавлено сопоставление SQL Server 2000 с SQL Server 2005.
  • Добавлены примеры.
  • Добавлена таблица «Мощности связи».
Измененное содержимое
  • Изменено описание столбцов start_time, status, sql_handle, plan_handle, database_id, user_id, connection_id, transaction_id, context_info, scheduler_id, task_address, language, date_format, transaction_isolation_level, date_first, executing_managed_code.

5 декабря 2005 г.

Новое содержимое
  • Добавлено примечание о времени, затраченном в режиме с вытеснением.
Измененное содержимое
  • Исправлен тип данных wait_type.