sys.dm_os_tasks (Transact-SQL)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure Azure SynapseAnalytics AnalyticsPlatform System (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, un disconnessione e attività di sistema come attività di pulizia fantasma, attività di checkpoint, writer di log, attività di ripristino parallelo. Per altre informazioni sulle attività, vedere La Guida all'architettura del thread e dell'attività.

Nota

Per chiamare questa operazione da Azure Synapse Analytics o Analytics 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à. 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 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, Analytics Platform System (PDW)

Identificatore del nodo in cui si trova questa distribuzione.

Autorizzazioni

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

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

Autorizzazioni per SQL Server 2022 e versioni successive

Richiede 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 Configura il grado massimo di configurazione del server 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 relative al sistema operativo di SQL Server (Transact-SQL)
Guida sull'architettura dei thread e delle attività