Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
Restituisce informazioni sulla coda di attesa relativa alle attività che sono in attesa di una risorsa. Per altre informazioni sulle attività, vedere la Guida all'architettura di thread e attività.
Nota
Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_os_waiting_tasks. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
| Nome colonna | Tipo di dati | Descrizione |
|---|---|---|
waiting_task_address |
varbinary(8) | Indirizzo dell'attività in attesa. |
session_id |
smallint | ID della sessione associata all'attività. |
exec_context_id |
int | ID del contesto di esecuzione associato all'attività. |
wait_duration_ms |
bigint | Tempo totale di attesa per questo tipo di attesa, in millisecondi. Questa volta è inclusivo di signal_wait_time. |
wait_type |
nvarchar(60) | Nome del tipo di attesa. Per altre informazioni, vedere sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Indirizzo della risorsa attesa dall'attività. |
blocking_task_address |
varbinary(8) | Attività che mantiene bloccata la risorsa. |
blocking_session_id |
smallint | ID della sessione che blocca la richiesta. Se questa colonna è NULL, la richiesta non è bloccata o le informazioni sulla sessione di blocco non sono disponibili o non possono essere identificate.-2 = La risorsa di blocco è di proprietà di una transazione distribuita orfana.-3 = La risorsa di blocco è di proprietà di una transazione di ripristino posticipata.-4
=
session_id non è stato possibile determinare il proprietario del latch di blocco a causa delle transizioni di stato di latch interno. |
blocking_exec_context_id |
int | ID del contesto di esecuzione dell'attività di blocco. |
resource_description |
nvarchar(3072) | Descrizione della risorsa utilizzata. Per altre informazioni, vedere La colonna resource_description. |
pdw_node_id |
int | Identificatore del nodo in cui è attiva la distribuzione. Si applica a: Azure Synapse Analytics and Analytics Platform System (PDW) |
Colonna resource_description
La resource_description colonna contiene i valori possibili seguenti.
Proprietario della risorsa del pool di thread
threadpool id=scheduler<hex-address>
Proprietario della risorsa di query parallela
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
Bloccare il proprietario della risorsa
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>può essere:- Per
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - Per
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - Per
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - Per
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Per
Key:keylock hobtid=<hobt-id> dbid=<db-id> - Per
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Per
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - Per
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - Per
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - Per
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - Per
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- Per
<mode>può essere: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
Proprietario della risorsa esterna
Esterno ExternalResource=<wait-type>
Proprietario della risorsa generica
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Proprietario della risorsa latch
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Proprietario della risorsa XACT (transazione)
Si verifica quando è abilitato il blocco ottimizzato :
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Autorizzazioni
SQL Server 2019 (15.x) e versioni precedenti richiedono VIEW SERVER STATE l'autorizzazione.
SQL Server 2022 (16.x) e versioni successive e SQL Server e Istanza gestita di SQL di Azure richiedono VIEW SERVER PERFORMANCE STATE l'autorizzazione per il server.
Negli obiettivi di servizio Di base, S0 e S1 del database SQL di Azure e per i database nei pool elastici, nell'account amministratore del server , nell'account amministratore di Microsoft Entra o nell'appartenenza al ruolo del ##MS_ServerStateReader##server è necessaria. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'adesione ruolo del server ##MS_ServerStateReader##.
Esempi
R. Identificare le attività dalle sessioni bloccate
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Visualizzare le attività in attesa per ogni connessione
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. Visualizzare le attività in attesa per tutti i processi utente con informazioni aggiuntive
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