Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Retorna informações sobre a fila de espera de tarefas que estão aguardando em algum recurso. Para obter mais informações sobre tarefas, consulte o Guia de arquitetura de threads e tarefas.
Observação
Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_waiting_tasks. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
waiting_task_address |
varbinário(8) | Endereço da tarefa em 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 total de espera para este tipo de espera, em milissegundos. Este tempo inclui .signal_wait_time |
wait_type |
Nvarchar(60) | Nome do tipo de espera. Para obter mais informações, consulte sys.dm_os_wait_stats. |
resource_address |
varbinário(8) | Endereço do recurso para o qual a tarefa está aguardando. |
blocking_task_address |
varbinário(8) | Tarefa que está atualmente a conter este recurso |
blocking_session_id |
smallint | ID da sessão que bloqueia o pedido. Se esta coluna for NULL, a solicitação não será bloqueada ou as informações da sessão de bloqueio não estarão disponíveis (ou não poderão 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 diferida.-4
=
session_id do proprietário da trava de bloqueio não pôde ser determinado devido a transições internas do estado da trava. |
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ó em que esta distribuição se encontra. Aplica-se a: Azure Synapse Analytics and Analytics Platform System (PDW) |
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>
Exchange-wait-type
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
Externa ExternalResource=<wait-type>
Proprietário do 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á ativado:
-
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 SQL do Azure, exigem VIEW SERVER PERFORMANCE STATE permissão no servidor.
Nos objetivos de serviço do Banco de Dados SQL do Azure Basic, S0 e S1 , e para bancos de dados em pools elásticos, é necessária a conta de administrador do servidor , a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor . Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.
Examples
A. Identificar tarefas de sessões bloqueadas
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Ver tarefas em espera por ligaçã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 de 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