Condividi tramite


sys.dm_os_threads (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Restituisce un elenco di tutti i thread del sistema operativo SQL Server in esecuzione nel processo di SQL Server.

Nota

Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_os_threads. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome colonna Tipo di dati Descrizione
thread_address varbinary(8) Indirizzo di memoria (chiave primaria) del thread.
started_by_sqlservr bit Indica l'initiator del thread.

1 = SQL Server ha avviato il thread.

0 = Un altro componente ha avviato il thread, ad esempio una stored procedure estesa dall'interno di SQL Server.
os_thread_id int ID del thread assegnato dal sistema operativo.
stato int Flag di stato interno.
instruction_address varbinary(8) Indirizzo dell'istruzione attualmente in esecuzione.
creation_time datetime Ora di creazione del thread.
kernel_time bigint Quantità di tempo del kernel utilizzato dal thread.
usermode_time bigint Quantità di tempo utente utilizzato dal thread.
stack_base_address varbinary(8) Indirizzo di memoria dell'indirizzo dello stack più alto per il thread.
stack_end_address varbinary(8) Indirizzo di memoria dell'indirizzo dello stack più basso per il thread.
stack_bytes_committed int Numero di byte di cui è stato eseguito il commit nello stack.
stack_bytes_used int Numero di byte attivamente utilizzati nel thread.
affinità bigint Maschera della CPU nella quale il thread è in esecuzione. Questo dipende dal valore configurato dall'istruzione ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Potrebbe essere diverso dall'utilità di pianificazione in caso di affinità soft.
Priorità int Valore di priorità del thread.
Impostazioni locali int Identificatore delle impostazioni locali (LCID) nella cache per il thread.
Token varbinary(8) Handle del token di rappresentazione nella cache per il thread.
is_impersonating int Indica se il thread utilizza la rappresentazione Win32.

1 = Il thread utilizza credenziali di sicurezza diverse da quelle predefinite del processo. Ciò indica che il thread rappresenta un'entità diversa da quella che ha creato il processo.
is_waiting_on_loader_lock int Stato del sistema operativo indicante se il thread è in attesa di un blocco del caricatore.
fiber_data varbinary(8) Fiber Win32 corrente in esecuzione nel thread. Questo è applicabile solo quando SQL Server è configurato per il pool leggero.
thread_handle varbinary(8) Solo per uso interno.
event_handle varbinary(8) Solo per uso interno.
scheduler_address varbinary(8) Indirizzo di memoria dell'utilità di pianificazione associata al thread. Per altre informazioni, vedere sys.dm_os_schedulers (Transact-SQL).
worker_address varbinary(8) Indirizzo di memoria del thread di lavoro associato al thread. Per altre informazioni, vedere sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Indirizzo del contesto interno del fiber. Questo è applicabile solo quando SQL Server è configurato per il pool leggero.
self_address varbinary(8) Puntatore di consistenza interno.
processor_group smallint Si applica a: SQL Server 2008 R2 (10.50.x) e versioni successive.

ID del gruppo di processori.
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.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## 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.

Note sulla versione di Linux

A causa del funzionamento del motore SQL in Linux, alcune di queste informazioni non corrispondono ai dati di diagnostica Linux. Ad esempio, os_thread_id non corrisponde al risultato di strumenti come psotop procfs (/proc/pid). Ciò è dovuto al livello SQLPAL (Platform Abstraction Layer), un livello tra i componenti di SQL Server e il sistema operativo.

Esempi

All'avvio, SQL Server avvia i thread e quindi associa i ruoli di lavoro a tali thread. Tuttavia, i componenti esterni, ad esempio una stored procedure estesa, possono avviare thread nel processo di SQL Server. SQL Server non ha alcun controllo su questi thread. sys.dm_os_threads può fornire informazioni sui thread non autorizzati che utilizzano risorse nel processo di SQL Server.

La query seguente viene usata per trovare i ruoli di lavoro, insieme al tempo usato per l'esecuzione, che eseguono thread non avviati da SQL Server.

Nota

A scopo di brevità, nell'istruzione * della query seguente viene utilizzato un asterisco (SELECT). È consigliabile evitare di utilizzare l'asterisco (*), in particolare per viste del catalogo, viste a gestione dinamica e funzioni di sistema con valori di tabella. Gli aggiornamenti e le versioni future di Microsoft SQL Server possono aggiungere colonne e modificare l'ordine delle colonne in queste viste e funzioni. Queste modifiche potrebbero causare malfunzionamenti nelle applicazioni che prevedono un ordine e un numero di colonne specifici.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

Vedi anche

sys.dm_os_workers (Transact-SQL)
Viste a gestione dinamica correlate al sistema operativo SQL Server (Transact-SQL)