Partager via


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 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.

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