sys.dm_os_tasks (Transact-SQL)
Retourne une ligne pour chaque tâche active dans l'instance de SQL Server.
Nom de 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'un des états suivants : EN ATTENTE : En attente d'un thread de travail. EXÉCUTABLE : Exécutable, mais en attente d'un quantum. EN COURS D'EXÉCUTION : En cours d'exécution sur le planificateur. SUSPENDU : Doté d'un processus de travail, mais en attente d'un événement. TERMINÉ :Completed. ACTIF EN ATTENTE : 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 parente de l'objet. |
Autorisation
Requiert l'autorisation VIEW SERVER STATE sur le serveur.
Exemples
A. Surveillance des demandes parallèles
Pour les requêtes qui sont exécutées en parallèle, vous observerez plusieurs lignes pour la même combinaison de (<session_id>, <request_id>). Utilisez la requête suivante pour trouver le degré de parallélisme de toutes les demandes actives.
Notes
Un request_id est unique dans 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 la performance du thread depuis 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