sys.dm_exec_requests (Transact-SQL)sys.dm_exec_requests (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Возвращает сведения о каждом запросе, который выполняется в SQL ServerSQL Server.Returns information about each request that is executing in SQL ServerSQL Server. Дополнительные сведения о запросах см. в разделе руководств по архитектуре потоков и задач.For more information about requests, see the Thread and Task Architecture Guide.

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
session_idsession_id smallintsmallint Идентификатор сеанса, к которому относится данный запрос.ID of the session to which this request is related. Не допускает значение NULL.Is not nullable.
request_idrequest_id intint Идентификатор запроса.ID of the request. Уникален в контексте сеанса.Unique in the context of the session. Не допускает значение NULL.Is not nullable.
start_timestart_time datetimedatetime Метка времени поступления запроса.Timestamp when the request arrived. Не допускает значение NULL.Is not nullable.
statusstatus nvarchar(30)nvarchar(30) Состояние запроса.Status of the request. Может иметь одно из следующих значений.This can be one of the following:

Историческая справкаBackground
ЗапущенRunning
Готово к запускуRunnable
В режиме ожиданияSleeping
ПриостановленаSuspended

Не допускает значение NULL.Is not nullable.
commandcommand nvarchar(32)nvarchar(32) Тип выполняемой в данный момент команды.Identifies the current type of command that is being processed. Основные типы команд:Common command types include the following:

SELECTSELECT
INSERTINSERT
UPDATEUPDATE
DELETEDELETE
BACKUP LOGBACKUP LOG
BACKUP DATABASEBACKUP DATABASE
DBCCDBCC
FORFOR

Текст запроса можно получить при помощи функции sys.dm_exec_sql_text, передав ей значение столбца sql_handle.The text of the request can be retrieved by using sys.dm_exec_sql_text with the corresponding sql_handle for the request. Внутренние системные процессы устанавливают команду в соответствии с выполняемой задачей.Internal system processes set the command based on the type of task they perform. Например:Tasks can include the following:

LOCK MONITOR;LOCK MONITOR
CHECKPOINTLAZY;CHECKPOINTLAZY
WRITER.WRITER

Не допускает значение NULL.Is not nullable.
sql_handlesql_handle varbinary (64)varbinary(64) Токен, однозначно определяющий пакет или хранимую процедуру, частью которой является запрос.Is a token that uniquely identifies the batch or stored procedure that the query is part of. Допускает значение NULL.Is nullable.
statement_start_offsetstatement_start_offset intint Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой запущена текущая инструкция.Number of characters into the currently executing batch or stored procedure at which the currently executing statement starts. Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text для извлечения исполняемой в настоящий момент инструкции по запросу.Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request. Допускает значение NULL.Is nullable.
statement_end_offsetstatement_end_offset intint Количество символов в выполняемом в настоящий момент пакете или хранимой процедуре, в которой завершилась текущая инструкция.Number of characters into the currently executing batch or stored procedure at which the currently executing statement ends. Может применяться вместе с функциями динамического управления sql_handle, statement_end_offset и sys.dm_exec_sql_text для извлечения исполняемой в настоящий момент инструкции по запросу.Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request. Допускает значение NULL.Is nullable.
plan_handleplan_handle varbinary (64)varbinary(64) Токен, однозначно определяющий план выполнения запроса для выполняемого в данный момент пакета.Is a token that uniquely identifies a query execution plan for a batch that is currently executing. Допускает значение NULL.Is nullable.
database_iddatabase_id smallintsmallint Идентификатор базы данных, к которой выполняется запрос.ID of the database the request is executing against. Не допускает значение NULL.Is not nullable.
user_iduser_id intint Идентификатор пользователя, отправившего данный запрос.ID of the user who submitted the request. Не допускает значение NULL.Is not nullable.
connection_idconnection_id uniqueidentifieruniqueidentifier Идентификатор соединения, по которому поступил запрос.ID of the connection on which the request arrived. Допускает значение NULL.Is nullable.
blocking_session_idblocking_session_id smallintsmallint Идентификатор сеанса, блокирующего данный запрос.ID of the session that is blocking the request. Если этот столбец имеет значение NULL или равен 0, запрос не блокируется или сведения о сеансе блокирующего сеанса недоступны (или не могут быть идентифицированы).If this column is NULL or equal to 0, the request is not blocked, or the session information of the blocking session is not available (or cannot be identified).

-2 = Блокирующий ресурс принадлежит потерянной распределенной транзакции.-2 = The blocking resource is owned by an orphaned distributed transaction.

-3 = Блокирующий ресурс принадлежит отложенной транзакции восстановления.-3 = The blocking resource is owned by a deferred recovery transaction.

-4 = Идентификатор сеанса владельца кратковременной блокировки определить на данный момент не удалось из-за переходов между внутренними состояниями кратковременной блокировки.-4 = Session ID of the blocking latch owner could not be determined at this time because of internal latch state transitions.
wait_typewait_type nvarchar(60)nvarchar(60) Если запрос в настоящий момент блокирован, в столбце содержится тип ожидания.If the request is currently blocked, this column returns the type of wait. Допускает значение NULL.Is nullable.

Дополнительные сведения о типах ожиданий см. в разделе sys. (DM_OS_WAIT_STATS Transact-)SQL.For information about types of waits, see sys.dm_os_wait_stats (Transact-SQL).
wait_timewait_time intint Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в миллисекундах).If the request is currently blocked, this column returns the duration in milliseconds, of the current wait. Не допускает значение NULL.Is not nullable.
last_wait_typelast_wait_type nvarchar(60)nvarchar(60) Если запрос был блокирован ранее, в столбце содержится тип последнего ожидания.If this request has previously been blocked, this column returns the type of the last wait. Не допускает значение NULL.Is not nullable.
wait_resourcewait_resource nvarchar(256)nvarchar(256) Если запрос в настоящий момент блокирован, в столбце указан ресурс, освобождения которого ожидает запрос.If the request is currently blocked, this column returns the resource for which the request is currently waiting. Не допускает значение NULL.Is not nullable.
open_transaction_countopen_transaction_count intint Число транзакций, открытых для данного запроса.Number of transactions that are open for this request. Не допускает значение NULL.Is not nullable.
open_resultset_countopen_resultset_count intint Число результирующих наборов, открытых для данного запроса.Number of result sets that are open for this request. Не допускает значение NULL.Is not nullable.
transaction_idtransaction_id bigintbigint Идентификатор транзакции, в которой выполняется запрос.ID of the transaction in which this request executes. Не допускает значение NULL.Is not nullable.
context_infocontext_info varbinary(128)varbinary(128) Значение CONTEXT_INFO сеанса.CONTEXT_INFO value of the session. Допускает значение NULL.Is nullable.
percent_completepercent_complete realreal Процент завершения работы для следующих команд.Percentage of work completed for the following commands:

ALTER INDEX REORGANIZEALTER INDEX REORGANIZE
параметра AUTO_SHRINK с ALTER DATABASEAUTO_SHRINK option with ALTER DATABASE
BACKUP DATABASEBACKUP DATABASE
DBCC CHECKDBDBCC CHECKDB
DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKTABLEDBCC CHECKTABLE
DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC SHRINKFILEDBCC SHRINKFILE
RECOVERYRECOVERY
RESTORE DATABASERESTORE DATABASE
ROLLBACKROLLBACK
TDE ENCRYPTIONTDE ENCRYPTION

Не допускает значение NULL.Is not nullable.
estimated_completion_timeestimated_completion_time bigintbigint Только для внутреннего использования.Internal only. Не допускает значение NULL.Is not nullable.
cpu_timecpu_time intint Время ЦП (в миллисекундах), затраченное на выполнение запроса.CPU time in milliseconds that is used by the request. Не допускает значение NULL.Is not nullable.
total_elapsed_timetotal_elapsed_time intint Общее время, истекшее с момента поступления запроса (в миллисекундах).Total time elapsed in milliseconds since the request arrived. Не допускает значение NULL.Is not nullable.
scheduler_idscheduler_id intint Идентификатор планировщика, который планирует данный запрос.ID of the scheduler that is scheduling this request. Не допускает значение NULL.Is not nullable.
task_addresstask_address varbinary (8)varbinary(8) Адрес блока памяти, выделенного для задачи, связанной с этим запросом.Memory address allocated to the task that is associated with this request. Допускает значение NULL.Is nullable.
readsreads bigintbigint Число операций чтения, выполненных данным запросом.Number of reads performed by this request. Не допускает значение NULL.Is not nullable.
writeswrites bigintbigint Число операций записи, выполненных данным запросом.Number of writes performed by this request. Не допускает значение NULL.Is not nullable.
logical_readslogical_reads bigintbigint Число логических операций чтения, выполненных данным запросом.Number of logical reads that have been performed by the request. Не допускает значение NULL.Is not nullable.
text_sizetext_size intint Установка параметра TEXTSIZE для данного запроса.TEXTSIZE setting for this request. Не допускает значение NULL.Is not nullable.
languagelanguage nvarchar(128)nvarchar(128) Установка языка для данного запроса.Language setting for the request. Допускает значение NULL.Is nullable.
date_formatdate_format nvarchar (3)nvarchar(3) Установка параметра DATEFORMAT для данного запроса.DATEFORMAT setting for the request. Допускает значение NULL.Is nullable.
date_firstdate_first smallintsmallint Установка параметра DATEFIRST для данного запроса.DATEFIRST setting for the request. Не допускает значение NULL.Is not nullable.
quoted_identifierquoted_identifier битbit 1 = Параметр QUOTED_IDENTIFIER для запроса включен (ON).1 = QUOTED_IDENTIFIER is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
arithabortarithabort битbit 1 = Параметр ARITHABORT для запроса включен (ON).1 = ARITHABORT setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
ansi_null_dflt_onansi_null_dflt_on битbit 1 = Параметр ANSI_NULL_DFLT_ON для запроса включен (ON).1 = ANSI_NULL_DFLT_ON setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
ansi_defaultsansi_defaults битbit 1 = Параметр ANSI_DEFAULTS для запроса включен (ON).1 = ANSI_DEFAULTS setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
ansi_warningsansi_warnings битbit 1 = Параметр ANSI_WARNINGS для запроса включен (ON).1 = ANSI_WARNINGS setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
ansi_paddingansi_padding битbit 1 = Параметр ANSI_PADDING для запроса включен (ON).1 = ANSI_PADDING setting is ON for the request.

В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
ansi_nullsansi_nulls битbit 1 = Параметр ANSI_NULLS для запроса включен (ON).1 = ANSI_NULLS setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
concat_null_yields_nullconcat_null_yields_null битbit 1 = Параметр CONCAT_NULL_YIELDS_NULL для запроса включен (ON).1 = CONCAT_NULL_YIELDS_NULL setting is ON for the request. В противном случае — 0.Otherwise, it is 0.

Не допускает значение NULL.Is not nullable.
transaction_isolation_leveltransaction_isolation_level smallintsmallint Уровень изоляции, с которым создана транзакция для данного запроса.Isolation level with which the transaction for this request is created. Не допускает значение NULL.Is not nullable.
0 = не указан;0 = Unspecified
1 = читать незафиксированные;1 = ReadUncomitted
2 = читать зафиксированные;2 = ReadCommitted
3 = повторяемые результаты;3 = Repeatable
4 = сериализуемые;4 = Serializable
5 = моментальный снимок.5 = Snapshot
lock_timeoutlock_timeout intint Время ожидания блокировки для данного запроса (в миллисекундах).Lock time-out period in milliseconds for this request. Не допускает значение NULL.Is not nullable.
deadlock_prioritydeadlock_priority intint Значение параметра DEADLOCK_PRIORITY для данного запроса.DEADLOCK_PRIORITY setting for the request. Не допускает значение NULL.Is not nullable.
row_countrow_count bigintbigint Число строк, возвращенных клиенту по данному запросу.Number of rows that have been returned to the client by this request. Не допускает значение NULL.Is not nullable.
prev_errorprev_error intint Последняя ошибка, происшедшая при выполнении запроса.Last error that occurred during the execution of the request. Не допускает значение NULL.Is not nullable.
nest_levelnest_level intint Текущий уровень вложенности кода, выполняемого для данного запроса.Current nesting level of code that is executing on the request. Не допускает значение NULL.Is not nullable.
granted_query_memorygranted_query_memory intint Число страниц, выделенных для выполнения поступившего запроса.Number of pages allocated to the execution of a query on the request. Не допускает значение NULL.Is not nullable.
executing_managed_codeexecuting_managed_code битbit Указывает, выполняет ли данный запрос в настоящее время код объекта среды CLR (например, процедуры, типа или триггера).Indicates whether a specific request is currently executing common language runtime objects, such as routines, types, and triggers. Этот флаг установлен в течение всего времени, когда объект среды CLR находится в стеке, даже когда из среды вызывается код Transact-SQLTransact-SQL.It is set for the full time a common language runtime object is on the stack, even while running Transact-SQLTransact-SQL from within common language runtime. Не допускает значение NULL.Is not nullable.
group_idgroup_id intint Идентификатор группы рабочей нагрузки, которой принадлежит этот запрос.ID of the workload group to which this query belongs. Не допускает значение NULL.Is not nullable.
query_hashquery_hash Binary (8)binary(8) Двоичное хэш-значение рассчитывается для запроса и используется для идентификации запросов с аналогичной логикой.Binary hash value calculated on the query and used to identify queries with similar logic. Можно использовать хэш запроса для определения использования статистических ресурсов для запросов, которые отличаются только своими литеральными значениями.You can use the query hash to determine the aggregate resource usage for queries that differ only by literal values.
query_plan_hashquery_plan_hash Binary (8)binary(8) Двоичное хэш-значение рассчитывается для плана выполнения запроса и используется для идентификации аналогичных планов выполнения запросов.Binary hash value calculated on the query execution plan and used to identify similar query execution plans. Можно использовать хэш плана запроса для нахождения совокупной стоимости запросов со схожими планами выполнения.You can use query plan hash to find the cumulative cost of queries with similar execution plans.
statement_sql_handlestatement_sql_handle varbinary (64)varbinary(64) Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и более поздних версий.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and later.

Описатель SQL отдельного запроса.SQL handle of the individual query.

Этот столбец имеет значение NULL, если хранилище запросов не включено для базы данных.This column is NULL if Query Store is not enabled for the database.
statement_context_idstatement_context_id bigintbigint Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и более поздних версий.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and later.

Необязательный внешний ключ к sys. query_context_settings.The optional foreign key to sys.query_context_settings.

Этот столбец имеет значение NULL, если хранилище запросов не включено для базы данных.This column is NULL if Query Store is not enabled for the database.
dopdop intint Область применения: SQL Server 2016 (13.x)SQL Server 2016 (13.x) и более поздних версий.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later.

Степень параллелизма запроса.The degree of parallelism of the query.
parallel_worker_countparallel_worker_count intint Область применения: SQL Server 2016 (13.x)SQL Server 2016 (13.x) и более поздних версий.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later.

Количество зарезервированных параллельных рабочих ролей, если это параллельный запрос.The number of reserved parallel workers if this is a parallel query.
external_script_request_idexternal_script_request_id uniqueidentifieruniqueidentifier Область применения: SQL Server 2016 (13.x)SQL Server 2016 (13.x) и более поздних версий.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later.

Идентификатор запроса внешнего скрипта, связанный с текущим запросом.The external script request ID associated with the current request.
is_resumableis_resumable битbit Область применения: SQL Server 2017 (14.x)SQL Server 2017 (14.x) и более поздних версий.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) and later.

Указывает, является ли запрос возобновляемой операцией с индексом.Indicates whether the request is a resumable index operation.
page_resourcepage_resource Binary (8)binary(8) Область применения: SQL Server 2019 (15.x)SQL Server 2019 (15.x)Applies to: SQL Server 2019 (15.x)SQL Server 2019 (15.x)

8-байтовое шестнадцатеричное представление ресурса страницы, если столбец wait_resource содержит страницу.An 8-byte hexadecimal representation of the page resource if the wait_resource column contains a page. Дополнительные сведения см. в разделе sys. fn_PageResCracker.For more information, see sys.fn_PageResCracker.
page_server_readspage_server_reads bigintbigint Область применения: масштабирование базы данных SQL AzureApplies to: Azure SQL Database Hyperscale

Число операций чтения сервера страниц, выполненных этим запросом.Number of page server reads performed by this request. Не допускает значение NULL.Is not nullable.
     

RemarksRemarks

Чтобы выполнить код, внешний по отношению к SQL ServerSQL Server (например, расширенную хранимую процедуру или распределенный запрос), поток должен выйти из-под управления планировщика, работающего в режиме без вытеснения.To execute code that is outside SQL ServerSQL Server (for example, extended stored procedures and distributed queries), a thread has to execute outside the control of the non-preemptive scheduler. Для этого исполнитель переходит в режим с вытеснением.To do this, a worker switches to preemptive mode. Значения времени, возвращаемые этим динамическим административным представлением, не включают время, затраченное в режиме с вытеснением.Time values returned by this dynamic management view do not include time spent in preemptive mode.

При выполнении параллельных запросов в режиме строкиSQL ServerSQL Server назначает рабочий поток для координации рабочих потоков, ответственных за выполнение назначенных им задач.When executing parallel requests in row mode, SQL ServerSQL Server assigns a worker thread to coordinate the worker threads responsible for completing tasks assigned to them. В этом динамическом административном отображении для запроса отображается только поток координатора.In this DMV only the coordinator thread is visible for the request. Столбцы операций чтения, записи, logical_readsи row_count не обновляются для потока координатора.The columns reads, writes, logical_reads, and row_count are not updated for the coordinator thread. Столбцы wait_type, wait_time, last_wait_type, wait_resourceи granted_query_memory обновляются только для потока координатора.The columns wait_type, wait_time, last_wait_type, wait_resource, and granted_query_memory are only updated for the coordinator thread. Дополнительные сведения см. в Руководстве по архитектуре потоков и задач.For more information, see the Thread and Task Architecture Guide.

РазрешенияPermissions

Если пользователь имеет VIEW SERVER STATE разрешение на сервере, он увидит все сеансы выполнения на экземпляре SQL ServerSQL Server; в противном случае пользователь увидит только текущий сеанс.If the user has VIEW SERVER STATE permission on the server, the user will see all executing sessions on the instance of SQL ServerSQL Server; otherwise, the user will see only the current session. VIEW SERVER STATE не может быть предоставлен в База данных SQLSQL Database, поэтому sys.dm_exec_requests всегда ограничивается текущим соединением.VIEW SERVER STATE cannot be granted in База данных SQLSQL Database so sys.dm_exec_requests is always limited to the current connection.

ПримерыExamples

A.A. Поиск текста запроса для выполнения пакетаFinding the query text for a running batch

В следующем примере выполняется запрос sys.dm_exec_requests для поиска необходимого запроса и из его результата копируется sql_handle.The following example queries sys.dm_exec_requests to find the interesting query and copy its sql_handle from the output.

SELECT * FROM sys.dm_exec_requests;  
GO  

Затем для получения текста инструкции используйте скопированный sql_handle с помощью системной функции sys.dm_exec_sql_text(sql_handle).Then, to obtain the statement text, use the copied sql_handle with system function sys.dm_exec_sql_text(sql_handle).

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

б.B. Поиск всех блокировок, которые содержит выполняемый пакетFinding all locks that a running batch is holding

В следующем примере производится запрос к sys. dm_exec_requests для поиска интересного пакета и копирования его transaction_id из выходных данных.The following example queries sys.dm_exec_requests to find the interesting batch and copy its transaction_id from the output.

SELECT * FROM sys.dm_exec_requests;  
GO

Затем, чтобы найти сведения о блокировке, используйте скопированный transaction_id с системной функцией sys. dm_tran_locks.Then, to find lock information, use the copied transaction_id with the system function sys.dm_tran_locks.

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

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

В следующем примере производится запрос к sys. dm_exec_requests для поиска сведений о заблокированных запросах.The following example queries sys.dm_exec_requests to find information about blocked 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  

Г.D. Упорядочивание существующих запросов по ЦПOrdering existing requests by CPU

SELECT 
   req.session_id
   , req.start_time
   , cpu_time 'cpu_time_ms'
   , object_name(st.objectid,st.dbid) 'ObjectName' 
   , substring
      (REPLACE
        (REPLACE
          (SUBSTRING
            (ST.text
            , (req.statement_start_offset/2) + 1
            , (
               (CASE statement_end_offset
                  WHEN -1
                  THEN DATALENGTH(ST.text)  
                  ELSE req.statement_end_offset
                  END
                    - req.statement_start_offset)/2) + 1)
       , CHAR(10), ' '), CHAR(13), ' '), 1, 512)  AS statement_text  
FROM sys.dm_exec_requests AS req  
   CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as ST
   ORDER BY cpu_time desc;
GO

См. также статьюSee Also

Динамические административные представления и функции Dynamic Management Views and Functions
Динамические административные представления и функции, связанные с выполнением Execution Related Dynamic Management Views and Functions
sys. dm_os_memory_clerks sys.dm_os_memory_clerks
sys. dm_os_sys_info sys.dm_os_sys_info
sys. dm_exec_query_memory_grants sys.dm_exec_query_memory_grants
sys. dm_exec_query_plan sys.dm_exec_query_plan
sys. dm_exec_sql_text sys.dm_exec_sql_text
SQL Server, объект статистики SQL SQL Server, SQL Statistics Object
Руководство по архитектуре обработки запросов Query Processing Architecture Guide
Руководство по архитектуре потоков и задачThread and Task Architecture Guide