sys.dm_os_threads (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourne une liste de tous les threads du système d’exploitation SQL Server qui s’exécutent sous le processus SQL Server.

Remarque

Pour l’appeler à partir d’Azure Synapse Analytics ou d’Analytics Platform System (PDW), utilisez le nom sys.dm_pdw_nodes_os_threads. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
thread_address varbinary(8) Adresse mémoire (clé primaire) du thread.
started_by_sqlservr bit Indique l'initiateur du thread.

1 = SQL Server a démarré le thread.

0 = Un autre composant a démarré le thread, tel qu’une procédure stockée étendue à partir de SQL Server.
os_thread_id int ID du thread qui est attribué par le système d'exploitation.
statut int Indicateur d'état interne.
instruction_address varbinary(8) Adresse de l'instruction qui est en cours d'exécution.
creation_time datetime Heure de création du thread.
kernel_time bigint Temps du noyau utilisé par ce thread.
usermode_time bigint Temps utilisateur utilisé par ce thread.
stack_base_address varbinary(8) Adresse mémoire haute de la pile de ce thread.
stack_end_address varbinary(8) Adresse mémoire basse de la pile de ce thread.
stack_bytes_committed int Nombre d'octets validés dans la pile.
stack_bytes_used int Nombre d'octets actuellement utilisés activement sur le thread.
affinité bigint Masque d'UC sur lequel s'exécute ce thread. Cela dépend de la valeur configurée par l’instruction ALTER SERVER CONFIGURATION SET PROCESS AFFINITY . Peut être différent du planificateur en cas d'affinité logicielle.
Priorité int Priorité du thread.
Paramètres régionaux int Indicateur de paramètres régionaux mis en cache (LCID) pour le thread.
par jeton varbinary(8) Descripteur du jeton d'emprunt d'identité mis en cache pour le thread.
is_impersonating int Indique si ce thread utilise l'emprunt d'identité Win32.

1 = Le thread utilise des informations d'autorisation sécurisées différentes des informations par défaut du processus. Cela indique que le thread emprunte l'identité d'une entité différente de celle qui a créé le processus.
is_waiting_on_loader_lock int État du système d'exploitation qui indique si le thread attend le verrou du chargeur.
fiber_data varbinary(8) Fibre Win32 actuelle en cours d'exécution sur le thread. Cela s’applique uniquement lorsque SQL Server est configuré pour le regroupement léger.
thread_handle varbinary(8) Utilisation interne uniquement.
event_handle varbinary(8) Utilisation interne uniquement.
scheduler_address varbinary(8) Adresse mémoire du planificateur associé au thread. Pour plus d’informations, consultez sys.dm_os_schedulers (Transact-SQL).
worker_address varbinary(8) Adresse mémoire du thread de travail associé à ce thread. Pour plus d’informations, consultez sys.dm_os_workers (Transact-SQL).
fiber_context_address varbinary(8) Adresse interne du contexte de la fibre. Cela s’applique uniquement lorsque SQL Server est configuré pour le regroupement léger.
self_address varbinary(8) Pointeur de cohérence interne.
processor_group smallint S’applique à : SQL Server 2008 R2 (10.50.x) et versions ultérieures.

ID de groupe de processeurs.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.

Autorisations

Sur SQL Server et SQL Managed Instance, l’autorisation VIEW SERVER STATE est requise.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader##rôle serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Remarques sur la version de Linux

En raison du fonctionnement du moteur SQL dans Linux, certaines de ces informations ne correspondent pas aux données de diagnostic Linux. Par exemple, os_thread_id ne correspond pas au résultat des outils tels que ps,top ou les procfs (/proc/pid). Cela est dû à la couche d’abstraction de plateforme (SQLPAL), une couche entre les composants SQL Server et le système d’exploitation.

Exemples

Au démarrage, SQL Server démarre les threads, puis associe les workers à ces threads. Toutefois, les composants externes, tels qu’une procédure stockée étendue, peuvent démarrer des threads sous le processus SQL Server. SQL Server n’a aucun contrôle de ces threads. sys.dm_os_threads pouvez fournir des informations sur les threads non autorisés qui consomment des ressources dans le processus SQL Server.

La requête suivante permet de rechercher des workers, ainsi que le temps utilisé pour l’exécution, qui exécutent des threads non démarrés par SQL Server.

Remarque

Dans un souci de concision, la requête suivante utilise un astérisque (*) dans l'instruction SELECT. Évitez d'utiliser l'astérique (*), surtout avec des affichages catalogue, des vues de gestion dynamique et des fonctions table système. Les futures mises à niveau et versions de Microsoft SQL Server peuvent ajouter des colonnes et modifier l’ordre des colonnes par ces vues et fonctions. Ces changements entraveront peut-être le fonctionnement des applications qui attendent un ordre et un nombre de colonnes spécifiques.

SELECT *  
  FROM sys.dm_os_threads  
  WHERE started_by_sqlservr = 0;  

Voir aussi

sys.dm_os_workers (Transact-SQL)
Vues de gestion dynamique SQL Server liées au système d'exploitation (Transact-SQL)