sys.dm_os_tasks (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Retourne une ligne pour chaque tâche active dans l’instance de SQL Server. Une tâche est l’unité de base de l’exécution dans SQL Server. Parmi les exemples de tâches, citons une requête, une connexion, une déconnexion et des tâches système telles que l’activité de nettoyage fantôme, l’activité de point de contrôle, l’enregistreur de journaux, l’activité de restauration parallèle. Pour plus d’informations sur les tâches, consultez le Guide de l’architecture des threads et des tâches.
Remarque
Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme d’analyse (PDW), utilisez le nom sys.dm_pdw_nodes_os_tasks. 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 |
---|---|---|
task_address | varbinary(8) | Adresse mémoire de l'objet. |
task_state | nvarchar(60) | État de la tâche. Il peut s'agir de l'une des ressources suivantes : PENDING : En attente d'un thread de travail. RUNNABLE : Exécutable, mais en attente d'un quantum. RUNNING : En cours d'exécution sur le planificateur. SUSPENDED : Doté d'un processus de travail, mais en attente d'un événement. DONE : Terminé. SPINLOOP : Bloqué dans une boucle. |
context_switches_count | int | Nombre de commutateurs de contexte de planificateur exécutés par cette tâche. |
pending_io_count | int | Nombre d'E/S physiques qui sont effectuées par cette tâche. |
pending_io_byte_count | bigint | Nombre total d'octets d'E/S qui sont traités par cette tâche. |
pending_io_byte_average | int | Nombre moyen d'octets d'E/S qui sont traités par cette tâche. |
scheduler_id | int | ID du planificateur parent. Handle pointant vers les informations de planification associées à cette tâche. Pour plus d’informations, consultez sys.dm_os_schedulers (Transact-SQL). |
session_id | smallint | ID de la session qui est associée à la tâche. |
exec_context_id | int | ID du contexte d'exécution qui est associé à la tâche. |
request_id | int | ID de la demande de la tâche. Pour plus d’informations, consultez sys.dm_exec_requests (Transact-SQL). |
worker_address | varbinary(8) | Adresse mémoire du processus de travail qui exécute la tâche. NULL = La tâche est en attente d'un processus de travail pour s'exécuter ou son exécution vient de se terminer. Pour plus d’informations, consultez sys.dm_os_workers (Transact-SQL). |
host_address | varbinary(8) | Adresse mémoire de l'hôte. 0 = Aucun hôte n'a été utilisé pour créer la tâche. Cela permet d'identifier l'hôte utilisé pour créer cette tâche. Pour plus d’informations, consultez sys.dm_os_hosts (Transact-SQL). |
parent_task_address | varbinary(8) | Adresse mémoire de la tâche qui est le parent de l'objet. |
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 les pools élastiques, le compte d’administration du serveur, le compte d’administration Microsoft Entra ou l’appartenance dans ##MS_ServerStateReader##
au rôle de 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.
Exemples
R. Surveillance des demandes parallèles
Pour les requêtes exécutées en parallèle, vous verrez plusieurs lignes pour la même combinaison de (<session_id>,< request_id).> Utilisez la requête suivante pour rechercher l’option Configurer le degré maximal de parallélisme de configuration du serveur pour toutes les requêtes actives.
Remarque
Une request_id est unique au sein d’une session.
SELECT
task_address,
task_state,
context_switches_count,
pending_io_count,
pending_io_byte_count,
pending_io_byte_average,
scheduler_id,
session_id,
exec_context_id,
request_id,
worker_address,
host_address
FROM sys.dm_os_tasks
ORDER BY session_id, request_id;
B. Association d'ID de session à des threads Windows
Vous pouvez utiliser la requête suivante pour associer une valeur d'ID de session à un ID de thread Windows. Vous pouvez ensuite surveiller les performances du thread dans l'Analyseur de performances Windows. La requête suivante ne renvoie pas d'informations pour les sessions en veille.
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO
Voir aussi
Vues de gestion dynamique SQL Server liées au système d'exploitation (Transact-SQL)
Guide d’architecture de thread et de tâche