sys.dm_exec_requests
Изменения: 12 декабря 2006 г.
Возвращает одну строку для каждого запроса, выполняемого в SQL Server. Динамические административные представления области сервера sys.dm_exec_connections, sys.dm_exec_sessions и sys.dm_exec_requests сопоставляются с системным представлением sys.sysprocesses (ранее это была системная таблица).
Примечание. |
---|
Чтобы выполнить код, внешний по отношению к 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
Процент завершения работы для некоторых операций, включая откаты.
Примечание.
Этот столбец не отражает процесса получения данных, возвращаемых по запросу.
Не допускает значения 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 на сервер.
Примечание. |
---|
Если пользователь имеет разрешение 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 г. |
|
5 декабря 2005 г. |
|