sys.dm_os_waiting_tasks (Transact-SQL)sys.dm_os_waiting_tasks (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Возвращает сведения об очереди задач, ожидающих освобождения определенного ресурса.Returns information about the wait queue of tasks that are waiting on some resource. Дополнительные сведения о задачах см. в разделе руководств по архитектуре потоков и задач.For more information about tasks, see the Thread and Task Architecture Guide.

Примечание

Чтобы вызвать эту функцию из Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) или Параллельное хранилище данныхParallel Data Warehouse , используйте имя sys. dm_pdw_nodes_os_waiting_tasks.To call this from Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) or Параллельное хранилище данныхParallel Data Warehouse, use the name sys.dm_pdw_nodes_os_waiting_tasks.

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
waiting_task_addresswaiting_task_address varbinary(8)varbinary(8) Адрес ожидающей задачи.Address of the waiting task.
session_idsession_id smallintsmallint Идентификатор сеанса, связанного с этой задачей.ID of the session associated with the task.
exec_context_idexec_context_id intint Идентификатор контекста выполнения, связанного с этой задачей.ID of the execution context associated with the task.
wait_duration_mswait_duration_ms bigintbigint Общее время ожидания для этого типа ожиданий в миллисекундах.Total wait time for this wait type, in milliseconds. Это время является инклюзивным signal_wait_time.This time is inclusive of signal_wait_time.
wait_typewait_type nvarchar(60)nvarchar(60) Имя типа ожидания.Name of the wait type.
resource_addressresource_address varbinary(8)varbinary(8) Адрес ресурса, освобождения которого ожидает задача.Address of the resource for which the task is waiting.
blocking_task_addressblocking_task_address varbinary(8)varbinary(8) Задача, которая в настоящий момент блокирует этот ресурс.Task that is currently holding this resource
blocking_session_idblocking_session_id smallintsmallint Идентификатор сеанса, блокирующего данный запрос.ID of the session that is blocking the request. Если этот столбец содержит значение NULL, то запрос не блокирован или сведения о сеансе блокировки недоступны (или не могут быть идентифицированы).If this column is NULL, 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 due to internal latch state transitions.
blocking_exec_context_idblocking_exec_context_id intint Идентификатор контекста выполнения блокирующей задачи.ID of the execution context of the blocking task.
resource_descriptionresource_description nvarchar (3072)nvarchar(3072) Описание используемого ресурса.Description of the resource that is being consumed. Дополнительные сведения см. в приведенном ниже списке.For more information, see the list below.
pdw_node_idpdw_node_id intint Применимо к: Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) , Параллельное хранилище данныхParallel Data WarehouseApplies to: Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse), Параллельное хранилище данныхParallel Data Warehouse

Идентификатор узла, на котором находится данное распределение.The identifier for the node that this distribution is on.

Столбец resource_descriptionresource_description column

Столбец resource_description может иметь следующие значения.The resource_description column has the following possible values.

Владелец ресурса пула потоков:Thread-pool resource owner:

  • ThreadPool ID = планировщик<hex-address>threadpool id=scheduler<hex-address>

Владелец ресурса параллельного запроса:Parallel query resource owner:

  • Ексчанжеевент ID = {порт | Pipe} <hex-address> столбцы waittype = <exchange-wait-type> NodeId =<exchange-node-id>exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>

Exchange-wait-type:Exchange-wait-type:

  • e_waitNonee_waitNone

  • e_waitPipeNewRowe_waitPipeNewRow

  • e_waitPipeGetRowe_waitPipeGetRow

  • e_waitSynchronizeConsumerOpene_waitSynchronizeConsumerOpen

  • e_waitPortOpene_waitPortOpen

  • e_waitPortClosee_waitPortClose

  • e_waitRangee_waitRange

Владелец ресурса блокировки:Lock resource owner:

  • <type-specific-description> ID = <lock-hex-address> режим блокировки = <mode> ассоЦиатедобжектид =<associated-obj-id><type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>

    <type-specific-description> может быть:<type-specific-description> can be:

    • Для базы данных: databaselock, подресурс = <databaselock-subresource> DBID =<db-id>For DATABASE: databaselock subresource=<databaselock-subresource> dbid=<db-id>

    • Для файла: FileLock ИД <file-id> ресурса = подресурс = <filelock-subresource> DBID =<db-id>For FILE: filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id>

    • Для объекта: objectlock Локкпартитион = <lock-partition-id> objID = <obj-id> Resource = <objectlock-subresource> DBID =<db-id>For OBJECT: objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id>

    • Для страницы: пажелокк ИД = <file-id> идентификатор страницы = <page-id> DBID = <db-id> Resource =<pagelock-subresource>For PAGE: pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>

    • Для ключа: кэйлокк хобтид = <hobt-id> DBID =<db-id>For Key: keylock hobtid=<hobt-id> dbid=<db-id>

    • Для ЭКСТЕНТа: екстентлокк ИД = <file-id> идентификатор страницы = <page-id> DBID =<db-id>For EXTENT: extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id>

    • Для RID: ридлокк ИД = <file-id> идентификатор страницы = <page-id> DBID =<db-id>For RID: ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id>

    • Для приложения: аппликатионлокк hash = <hash> датабасепринЦипалид = <role-id> DBID =<db-id>For APPLICATION: applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>

    • Для МЕТАДАННЫХ: metadatalock, подресурс = <metadata-subresource> ClassID = <metadatalock-description> DBID =<db-id>For METADATA: metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id>

    • Для HOBT: хобтлокк хобтид = " <hobt-id> подресурс = <hobt-subresource> DBID =<db-id>For HOBT: hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id>

    • Для ALLOCATION_UNIT: аллокунитлокк хобтид = " <hobt-id> подресурс = <alloc-unit-subresource> DBID =<db-id>For ALLOCATION_UNIT: allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>

    <mode> может быть:<mode> can be:

    Sch-S, Sch-M, S, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeI-N, RangeI-S, RangeI-U, RangeI-X, RangeX-, RangeX-U, RangeX-XSch-S, Sch-M, S, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeI-N, RangeI-S, RangeI-U, RangeI-X, RangeX-, RangeX-U, RangeX-X

Владелец внешнего ресурса:External resource owner:

  • External Екстерналресаурце =<wait-type>External ExternalResource=<wait-type>

Владелец универсального ресурса:Generic resource owner:

  • Рабочая область Трансактионинфо Трансактионмутекс =<workspace-id>TransactionMutex TransactionInfo Workspace=<workspace-id>

  • MutexMutex

  • CLRTaskJoinCLRTaskJoin

  • CLRMonitorEventCLRMonitorEvent

  • CLRRWLockEventCLRRWLockEvent

  • resourceWaitresourceWait

Владелец ресурса кратковременной блокировки:Latch resource owner:

  • <db-id>:<file-id>:<page-in-file><db-id>:<file-id>:<page-in-file>

  • <GUID>

  • <latch-class> (<latch-address>)<latch-class> (<latch-address>)

РазрешенияPermissions

В SQL ServerSQL Server необходимо VIEW SERVER STATE разрешение.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
На База данных SQLSQL Database уровнях Premium требуется VIEW DATABASE STATE разрешение в базе данных.On База данных SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. На База данных SQLSQL Database уровнях Standard и Basic требуется Администратор сервера или учетная запись администратора Azure Active Directory .On База данных SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

ПримерExample

А.A. Выявление задач из заблокированных сеансов.Identify tasks from blocked sessions.

SELECT * FROM sys.dm_os_waiting_tasks 
WHERE blocking_session_id IS NOT NULL; 

Б.B. Просмотр ожидающих задач на подключениеView waiting tasks per connection

SELECT st.text AS [SQL Text], c.connection_id, w.session_id, 
  w.wait_duration_ms, w.wait_type, w.resource_address, 
  w.blocking_session_id, w.resource_description, c.client_net_address, c.connect_time
FROM sys.dm_os_waiting_tasks AS w
INNER JOIN sys.dm_exec_connections AS c ON w.session_id = c.session_id 
CROSS APPLY (SELECT * FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)) AS st 
              WHERE w.session_id > 50 AND w.wait_duration_ms > 0
ORDER BY c.connection_id, w.session_id
GO

В.C. Просмотр ожидающих задач для всех пользовательских процессов с дополнительными сведениямиView waiting tasks for all user processes with additional information

SELECT 'Waiting_tasks' AS [Information], owt.session_id,
    owt.wait_duration_ms, owt.wait_type, owt.blocking_session_id,
    owt.resource_description, es.program_name, est.text,
    est.dbid, eqp.query_plan, er.database_id, es.cpu_time,
    es.memory_usage*8 AS memory_usage_KB
FROM sys.dm_os_waiting_tasks owt
INNER JOIN sys.dm_exec_sessions es ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests er ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) est
OUTER APPLY sys.dm_exec_query_plan (er.plan_handle) eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO

См. такжеSee Also

SQL Server динамические административные представления, связанные с операционной системой ()Transact-SQL SQL Server Operating System Related Dynamic Management Views (Transact-SQL)
Руководство по архитектуре потоков и задачThread and Task Architecture Guide