sys.dm_os_threads (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 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
.
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.
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 ps
otop
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)