sys.dm_os_tasks (Transact-SQL)
Restituisce una riga per ogni attività in corso nell'istanza di SQL Server.
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
task_address |
varbinary(8) |
Indirizzo di memoria dell'oggetto. |
task_state |
nvarchar(60) |
Stato dell'attività. I possibili valori sono i 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 ulteriori 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 ulteriori 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 ulteriori 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 ulteriori informazioni, vedere sys.dm_os_hosts (Transact-SQL). |
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel server.
Esempi
A. Monitoraggio di richieste in parallelo
In caso di richieste eseguite in parallelo, vengono visualizzate più righe per la stessa combinazione di (<session_id>, <request_id>). Utilizzare la query seguente per individuare il grado di parallelismo relativo a tutte le richieste attive.
[!NOTA]
request_id è univoco all'interno di ogni 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. È quindi possibile monitorare le prestazioni del thread in Performance Monitor di Windows. La query seguente non restituisce informazioni per le sessioni inattive.
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