sys.dm_os_threads (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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)