sys.dm_os_tasks (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Restituisce una riga per ogni attività attiva nell'istanza di SQL Server. Un'attività è l'unità di base dell'esecuzione in SQL Server. Esempi di attività includono una query, un account di accesso, una disconnessione e attività di sistema come attività di pulizia fantasma, attività di checkpoint, writer di log, attività di rollforward parallele. Per altre informazioni sulle attività, vedere 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_tasks. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
task_address | varbinary(8) | Indirizzo di memoria dell'oggetto. |
task_state | nvarchar(60) | Stato dell'attività. Questa può essere una delle seguenti: PENDING: in attesa di un thread di lavoro. RUNNABLE: eseguibile, ma in attesa di ricevere un quantum. RUNNING: esecuzione in corso nell'utilità di pianificazione. SUSPENDED: è disponibile un thread di lavoro, ma è in attesa di un evento. DONE: completato. SPINLOOP: bloccato in uno spinlock. |
context_switches_count | int | Numero di cambi di contesto dell'utilità di pianificazione completati dall'attività. |
pending_io_count | int | Numero di I/O fisici eseguiti dall'attività. |
pending_io_byte_count | bigint | Numero totale di byte degli I/O eseguiti dall'attività. |
pending_io_byte_average | int | Numero medio di byte degli I/O eseguiti dall'attività. |
scheduler_id | int | ID dell'utilità di pianificazione padre. Si tratta di un handle per le informazioni dell'utilità di pianificazione per l'attività. Per altre informazioni, vedere sys.dm_os_schedulers (Transact-SQL). |
session_id | smallint | ID della sessione associata all'attività. |
exec_context_id | int | ID del contesto di esecuzione associato all'attività. |
request_id | int | ID della richiesta dell'attività. Per altre informazioni, vedere sys.dm_exec_requests (Transact-SQL). |
worker_address | varbinary(8) | Indirizzo di memoria del thread di lavoro che sta eseguendo l'attività. NULL = Per poter essere eseguita, l'attività è in attesa di un thread di lavoro oppure l'esecuzione dell'attività è stata completata. Per altre informazioni, vedere sys.dm_os_workers (Transact-SQL). |
host_address | varbinary(8) | Indirizzo di memoria dell'host. 0 = Per creare l'attività non è stato utilizzato alcun host. Ciò semplifica l'identificazione dell'host utilizzato per creare l'attività. Per altre informazioni, vedere sys.dm_os_hosts (Transact-SQL). |
parent_task_address | varbinary(8) | Indirizzo di memoria dell'attività padre dell'oggetto. |
pdw_node_id | int | Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) Identificatore del nodo in cui è attiva la distribuzione. |
Autorizzazioni
In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
Negli obiettivi del servizio Basic del Database SQL, S0 e S1 e per i database nei pool elastici, è richiesto l'account amministratore del server, l'account amministratore di Microsoft Entra o l’adesione nel ##MS_ServerStateReader##
al ruolo del server. 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##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.
Esempi
R. Monitoraggio di richieste in parallelo
Per le richieste eseguite in parallelo, verranno visualizzate più righe per la stessa combinazione di (<session_id>,< request_id).> Usare la query seguente per trovare l'opzione Di configurazione del server max degree of parallelism per tutte le richieste attive.
Nota
Un request_id è univoco all'interno di una sessione.
SELECT
task_address,
task_state,
context_switches_count,
pending_io_count,
pending_io_byte_count,
pending_io_byte_average,
scheduler_id,
session_id,
exec_context_id,
request_id,
worker_address,
host_address
FROM sys.dm_os_tasks
ORDER BY session_id, request_id;
B. Associazione di ID di sessione con thread di Windows
È possibile utilizzare la query seguente per associare un valore di ID di sessione a un ID di thread di Windows. È possibile monitorare le prestazioni del thread utilizzando Performance Monitor di Windows. La query seguente non restituisce informazioni per le sessioni sospese.
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO
Vedi anche
Viste a gestione dinamica correlate al sistema operativo SQL Server (Transact-SQL)
Guida sull'architettura dei thread e delle attività