sys.dm_os_tasks (Transact-SQL)

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse Analytics PlatformSystem (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à. Le opzioni a disposizione sono:

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

Per SQL Server e Istanza gestita di SQL è necessaria VIEW SERVER STATE l'autorizzazione.

Per gli obiettivi di servizio di base, S0 e S1 del database SQL e per i database nei pool elastici, l'account amministratore del server, l'account amministratore di Azure Active Directory o l'appartenenza al ruolo del##MS_ServerStateReader## server è necessaria. Per tutti gli altri obiettivi del servizio di database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'appartenenza al ruolo del ##MS_ServerStateReader## server.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE nel 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à