Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Возвращает сведения об очереди задач, ожидающих освобождения определенного ресурса. Дополнительные сведения о задачах см. в руководстве по архитектуре потоков и задач.
Примечание.
Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_waiting_tasks. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
| Имя столбца | Тип данных | Description |
|---|---|---|
waiting_task_address |
varbinary(8) | Адрес ожидающей задачи. |
session_id |
smallint | Идентификатор сеанса, связанного с этой задачей. |
exec_context_id |
int | Идентификатор контекста выполнения, связанного с этой задачей. |
wait_duration_ms |
bigint | Общее время ожидания для этого типа ожиданий в миллисекундах. Это время включает в себя signal_wait_time. |
wait_type |
nvarchar(60) | Имя типа ожидания. Дополнительные сведения см. в sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Адрес ресурса, освобождения которого ожидает задача. |
blocking_task_address |
varbinary(8) | Задача, которая в настоящий момент блокирует этот ресурс. |
blocking_session_id |
smallint | Идентификатор сеанса, блокирующего запрос. Если этот столбец NULLуказан, запрос не блокируется или сведения о сеансе блокирующего сеанса недоступны (или не могут быть идентифицированы).-2 = блокирующий ресурс принадлежит потерянным распределенным транзакциям.-3 = блокирующий ресурс принадлежит отложенной транзакции восстановления.-4
=
session_id Не удалось определить владельца блокировки из-за внутренних переходов состояния блокировки. |
blocking_exec_context_id |
int | Идентификатор контекста выполнения блокирующей задачи. |
resource_description |
nvarchar(3072) | Описание используемого ресурса. Дополнительные сведения см. в столбце resource_description. |
pdw_node_id |
int | Идентификатор узла, на который находится данное распределение. Область применения: Azure Synapse Analytics и система платформы аналитики (PDW) |
Столбец resource_description
Столбец resource_description имеет следующие возможные значения.
Владелец ресурса пула потоков
threadpool id=scheduler<hex-address>
Владелец ресурса параллельного запроса
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Тип exchange-wait
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Блокировка владельца ресурса
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>может принимать следующие значения:- Для
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Для
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Для
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Для
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Для
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Для
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Для
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Для
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Для
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Для
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Для
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Для
<mode>может принимать следующие значения: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-U, RangeX-X
Внешний владелец ресурса
Внешний ExternalResource=<wait-type>
Универсальный владелец ресурса
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Владелец ресурса блокировки
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Владелец ресурса XACT (транзакция)
Происходит при включенной оптимизированной блокировке :
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Разрешения
ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется VIEW SERVER STATE разрешение.
SQL Server 2022 (16.x) и более поздних версий, а также SQL Server и Управляемого экземпляра SQL Azure требуют VIEW SERVER PERFORMANCE STATE разрешения на сервере.
В базах данных SQL Azure Basic, S0 и S1 , а также для баз данных в эластичных пулах, учетной записи администратора сервера , учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.
Примеры
А. Определение задач из заблокированных сеансов
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Просмотр задач ожидания на подключение
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
В. Просмотр задач ожидания для всех пользовательских процессов с дополнительными сведениями
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 AS owt
INNER JOIN sys.dm_exec_sessions AS es
ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests AS er
ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) AS est
OUTER APPLY sys.dm_exec_query_plan(er.plan_handle) AS eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO