Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
PDW (Analytics Platform System)
Banco de Dados SQL no Microsoft Fabric
Retorna informações sobre a fila de espera de tarefas que estão esperando algum recurso. Para obter mais informações sobre tarefas, consulte o guia de arquitetura de tarefas e Thread.
Note
Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_os_waiting_tasks. Essa sintaxe não é suportada pelo pool de SQL sem servidor no Azure Synapse Analytics.
| Nome da Coluna | Tipo de dados | Descrição |
|---|---|---|
waiting_task_address |
varbinary(8) | Endereço da tarefa de espera. |
session_id |
smallint | ID da sessão associada à tarefa. |
exec_context_id |
int | ID do contexto de execução associado à tarefa. |
wait_duration_ms |
bigint | Tempo de espera total para esse tipo, em milissegundos. Desta vez é inclusivo de signal_wait_time. |
wait_type |
nvarchar(60) | Nome do tipo de espera. Para obter mais informações, confira sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Endereço do recurso pelo qual a tarefa está esperando. |
blocking_task_address |
varbinary(8) | Tarefa que está mantendo esse recurso atualmente |
blocking_session_id |
smallint | ID da sessão bloqueando a solicitação. Se essa coluna for NULL, a solicitação não está bloqueada ou as informações da sessão de bloqueio não estão disponíveis (ou não podem ser identificadas).-2 = O recurso de bloqueio pertence a uma transação distribuída órfã.-3 = O recurso de bloqueio pertence a uma transação de recuperação adiada.-4
=
session_id do proprietário da trava de bloqueio não pôde ser determinado devido a transições de estado de trava interna. |
blocking_exec_context_id |
int | ID do contexto de execução da tarefa de bloqueio. |
resource_description |
Nvarchar(3072) | Descrição do recurso que está sendo consumido. Para obter mais informações, consulte a coluna resource_description. |
pdw_node_id |
int | O identificador do nó no qual essa distribuição está. Aplica-se a: PDW (Azure Synapse Analytics and Analytics Platform System) |
A resource_description coluna
A resource_description coluna tem os seguintes valores possíveis.
Proprietário do recurso do pool de threads
threadpool id=scheduler<hex-address>
Proprietário do recurso de consulta paralela
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Tipo de espera do Exchange
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Bloquear proprietário do recurso
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>pode ser:- Para
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Para
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Para
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Para
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Para
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Para
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Para
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Para
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Para
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Para
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Para
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Para
<mode>pode ser: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-X
Proprietário do recurso externo
Externo ExternalResource=<wait-type>
Proprietário de recurso genérico
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Proprietário do recurso De trava
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Proprietário do recurso XACT (transação)
Ocorre quando o bloqueio otimizado está habilitado:
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Permissions
O SQL Server 2019 (15.x) e versões anteriores exigem VIEW SERVER STATE permissão.
O SQL Server 2022 (16.x) e versões posteriores e o SQL Server e a Instância Gerenciada de SQL do Azure exigem VIEW SERVER PERFORMANCE STATE permissão no servidor.
Nos objetivos de serviço Básico, S0 e S1 do Banco de Dados Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader## é necessária.
Examples
A. Identificar tarefas de sessões bloqueadas
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Exibir tarefas em espera por conexão
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. Exibir tarefas em espera para todos os processos do usuário com informações adicionais
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