sys.dm_os_threads (Transact-SQL)
Restituisce un elenco di tutti i thread del sistema operativo di SQL Server in esecuzione nel processo di SQL Server.
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 = Il thread è stato avviato da SQL Server. 0 = Il thread è stato avviato da un altro componente, ad esempio una stored procedure estesa in SQL Server. |
os_thread_id |
int |
ID del thread assegnato dal sistema operativo. |
status |
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. |
affinity |
bigint |
Maschera della CPU nella quale il thread è in esecuzione. Dipende dal valore dell'opzione di configurazione affinity mask di sp_configure. |
locale |
int |
Identificatore delle impostazioni locali (LCID) nella cache per il thread. |
priority |
int |
Valore di priorità del 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 protezione 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. È applicabile solo in caso di configurazione di SQL Server per il lightweight pooling. |
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 ulteriori informazioni, vedere sys.dm_os_schedulers (Transact-SQL). |
worker_address |
varbinary(8) |
Indirizzo di memoria del thread di lavoro associato al thread. Per ulteriori informazioni, vedere sys.dm_os_workers (Transact-SQL). |
fiber_context_address |
varbinary(8) |
Indirizzo del contesto interno del fiber. È applicabile solo in caso di configurazione di SQL Server per il lightweight pooling. |
self_address |
varbinary(8) |
Puntatore di consistenza interno. |
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel server.
Esempi
All'avvio di SQL Server, vengono avviati dei thread a cui vengono associati thread di lavoro. Componenti esterni, ad esempio una stored procedure estesa, possono tuttavia avviare nel processo di SQL Server dei thread su cui SQL Server non dispone di alcun controllo. sys.dm_os_threads può offrire informazioni sui thread non autorizzati che utilizzano risorse nel processo di SQL Server.
La query seguente consente di individuare i thread di lavoro che eseguono thread non avviati da SQL Server, con il tempo utilizzato per l'esecuzione.
[!NOTA]
A scopo di brevità, nell'istruzione SELECT della query seguente viene utilizzato un asterisco (*). È consigliabile evitare di utilizzare l'asterisco (*), in particolare per viste del catalogo, viste a gestione dinamica e funzioni di sistema con valori di tabella. Negli aggiornamenti e nelle versioni future di MicrosoftSQL Server è possibile che vengano aggiunte colonne e modificato 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;