sys.dm_exec_requests

Mis à jour : 12 décembre 2006

Retourne une ligne pour chaque demande qui s'exécute dans SQL Server. Les vues de gestion dynamique dans l'étendue de serveur sys.dm_exec_connections, sys.dm_exec_sessions et sys.dm_exec_requests mappent à la vue système sys.sysprocesses (ancienne table système).

ms177648.note(fr-fr,SQL.90).gifRemarque :
Pour exécuter du code externe à SQL Server (par exemple, des procédures stockées étendues et des requêtes distribuées), un thread doit s'exécuter en dehors du contrôle du planificateur non préemptif. Pour ce faire, un processus de travail passe en mode préemptif. Les valeurs temporelles retournées par cette vue de gestion dynamique n'incluent pas le temps passé en mode préemptif.

Nom de colonne

Type de données

Description

session_id

smallint

ID de la session à laquelle cette demande est liée. Cette colonne n'accepte pas la valeur NULL.

request_id

int

ID de la demande. Unique dans le contexte de la session. Cette colonne n'accepte pas la valeur NULL.

start_time

datetime

Date et heure prévues pour la prochaine exécution de la demande. Cette colonne n'accepte pas la valeur NULL.

status

nvarchar(60)

Statut de la demande. Les valeurs possibles sont les suivantes :

  • Arrière-plan. La demande est un thread d'arrière-plan tel que Resource Monitor ou Deadlock Monitor.
  • En cours d'exécution. La demande s'exécute.
  • Exécutable. La demande s'exécute et a expiré temporairement car elle s'exécute hors du quorum.
  • En état de veille. Pas d'activité à effectuer.
  • En attente. La demande attend d'être sélectionnée par un processus de travail.
  • Suspendu. La demande est en attente d'un événement.

Cette colonne n'accepte pas la valeur NULL.

command

nvarchar(32)

Identifie le type de commande en cours de traitement. Les types de commandes courants comprennent notamment :

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • BACKUP LOG
  • BACKUP DB
  • DBCC
  • WAITFOR

Le texte de la demande peut être extrait à l'aide de la fonction de gestion dynamique sys.dm_exec_sql_text avec le paramètre sql_handle correspondant. Des processus système internes définissent la commande en fonction du type de tâche à exécuter. Il peut s'agir des tâches suivantes :

  • LOCK MONITOR
  • CHECKPOINTLAZY
  • WRITER

Cette colonne n'accepte pas la valeur NULL.

sql_handle

varbinary(64)

Handle de l'instruction SQL de la demande. Ce handle permet de récupérer le texte réel de l'instruction dans la fonction de gestion dynamique sys.dm_exec_sql_text. Cette colonne n'accepte pas la valeur NULL.

statement_start_offset

int

Position du caractère de début de l'instruction d'exécution dans la procédure stockée ou dans le lot d'exécution. Cette valeur peut être utilisée avec la fonction de gestion dynamique statement_end_offset, sys.dm_exec_sql_text et sql_handle pour extraire l'instruction d'exécution de la demande. Cette colonne accepte la valeur NULL.

statement_end_offset

int

Position du caractère de fin de l'instruction d'exécution dans la procédure stockée ou dans le lot d'exécution. Cette valeur peut être utilisée avec la fonction de gestion dynamique statement_start_offset, sys.dm_exec_sql_text et sql_handle pour extraire l'instruction d'exécution de la demande. Cette colonne accepte la valeur NULL.

plan_handle

varbinary(64)

Handle du plan de requête de la demande. Pour consulter le plan de requête, utilisez la fonction de gestion dynamique sys.dm_exec_query_plan. Pour interroger le cache de plan, utilisez la vue de gestion dynamique sys.dm_exec_cached_plans. Pour consulter les attributs de plan, utilisez la fonction sys.dm_exec_plan_attributes. Cette colonne accepte la valeur NULL.

database_id

smallint

ID de la base de données sous laquelle s'exécute la demande. Pour plus d'informations de base de données, interrogez l'affichage catalogue sys.databases ; ou pour obtenir le nom de la base de données, utilisez la fonction intrinsèque db_name(). Cette colonne n'accepte pas la valeur NULL.

user_id

int

ID d'utilisateur sous lequel s'exécute la demande. Pour plus d'informations utilisateur, interrogez l'affichage catalogue sys.database_principals. Cette colonne n'accepte pas la valeur NULL.

connection_id

uniqueidentifier

ID de la connexion à laquelle la demande est parvenue. Pour plus d'informations sur la connexion physique ou logique, interrogez la vue de gestion dynamique sys.dm_exec_connections. Cette colonne accepte la valeur NULL.

blocking_session_id

smallint

ID de la session qui bloque la demande. Si cette colonne a la valeur 0, la demande n'est pas bloquée, ou les informations de la session qui bloque la demande ne sont pas disponibles ou ne peuvent pas être identifiées.

-2 = La ressource qui bloque la demande appartient à une transaction distribuée orpheline.

-3 = La ressource qui bloque la demande appartient à une transaction de récupération différée.

-4 = L'ID de session du propriétaire du verrou qui bloque la demande n'a pas pu être déterminé en raison de transitions d'état de verrou interne.

wait_type

nvarchar(60)

Si la demande est bloquée, cette colonne retourne le type d'attente. Cette colonne accepte la valeur NULL.

wait_time

int

Si la demande est bloquée, cette colonne retourne la durée de l'attente, en millisecondes. Cette colonne n'accepte pas la valeur NULL.

last_wait_type

nvarchar(64)

Si la demande a été bloquée précédemment, cette colonne indique le type de la dernière attente. Cette colonne n'accepte pas la valeur NULL.

wait_resource

nvarchar(512)

Si la demande est bloquée, cette colonne retourne la ressource attendue par la demande. Cette colonne n'accepte pas la valeur NULL.

open_transaction_count

int

Nombre de transactions ouvertes pour cette demande. Cette colonne n'accepte pas la valeur NULL.

open_resultset_count

int

Nombre de jeux de résultats ouverts pour cette demande. Cette colonne n'accepte pas la valeur NULL.

transaction_id

bigint

ID de la transaction dans laquelle cette demande s'exécute. Cet ID est unique pour une instance de SQL Server. Sert à interroger les vues de gestion dynamique sys.dm_tran_active_transactions, sys.dm_tran_locks ou sys.dm_tran_database_transactions. Cette colonne n'accepte pas la valeur NULL.

context_info

varbinary(128)

Valeur de l'instruction SET CONTEXT_INFO pour la demande. Cette colonne accepte la valeur NULL.

percent_complete

real

Pourcentage du travail effectué pour certaines opérations (annulations comprises).

ms177648.note(fr-fr,SQL.90).gifRemarque :

Ce compteur n'indique pas la progression des requêtes.

Cette colonne n'accepte pas la valeur NULL.

estimated_completion_time

bigint

Interne uniquement. Cette colonne n'accepte pas la valeur NULL.

cpu_time

int

Quantité de temps UC (en millisecondes) utilisé par la demande. Cette colonne n'accepte pas la valeur NULL.

total_elapsed_time

int

Temps total écoulé en millisecondes depuis l'arrivée de la demande. Cette colonne n'accepte pas la valeur NULL.

scheduler_id

int

ID du planificateur qui planifie cette demande. Pour plus d'informations sur ce planificateur, interrogez la vue de gestion dynamique sys.dm_os_schedulers. Cette colonne n'accepte pas la valeur NULL.

task_address

varbinary(8)

Adresse mémoire de la tâche associée à la demande. Pour plus d'informations sur cette tâche, interrogez la vue de gestion dynamique sys.dm_os_tasks. Cette colonne accepte la valeur NULL.

reads

bigint

Nombre de lectures effectuées par la demande. Cette colonne n'accepte pas la valeur NULL.

writes

bigint

Nombre d'écritures effectuées par la demande. Cette colonne n'accepte pas la valeur NULL.

logical_reads

bigint

Nombre de lectures logiques effectuées par la demande. Cette colonne n'accepte pas la valeur NULL.

text_size

int

Valeur du paramètre TEXTSIZE pour la demande. Cette colonne n'accepte pas la valeur NULL.

language

nvarchar(256)

Valeur du paramètre de langue pour la demande. Cette colonne accepte la valeur NULL.

date_format

nvarchar(3)

Valeur du paramètre DATEFORMAT pour la demande. Cette colonne accepte la valeur NULL.

date_first

smallint

Valeur du paramètre DATEFIRST pour la demande. Cette colonne n'accepte pas la valeur NULL.

quoted_identifier

bit

1 = QUOTED_IDENTIFIER est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

arithabort

bit

1 = ARITHABORT est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

ansi_null_dflt_on

bit

1 = ANSI_NULL_DFLT_ON est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

ansi_defaults

bit

1 = ANSI_DEFAULTS est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

ansi_warnings

bit

1 = ANSI_WARNINGS est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

ansi_padding

bit

1 = ANSI_PADDING est activé (ON) pour la demande.

Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

ansi_nulls

bit

1 = ANSI_NULLS est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

concat_null_yields_null

bit

1 = CONCAT_NULL_YIELDS_NULL est activé (ON) pour la demande. Sinon, la valeur est 0.

Cette colonne n'accepte pas la valeur NULL.

transaction_isolation_level

smallint

Niveau d'isolement de transaction de cette demande. Les valeurs possibles sont les suivantes :

0 = Non spécifié

1 = Lecture non validée

2 = Lecture validée

3 = Répétable

4 = Sérialisée

5 = Capture instantanée

Cette colonne n'accepte pas la valeur NULL.

lock_timeout

int

Délai d'attente de verrou externe pour la demande, en millisecondes. Cette colonne n'accepte pas la valeur NULL.

deadlock_priority

int

Paramètre DEADLOCK_PRIORITY de la demande. Cette colonne n'accepte pas la valeur NULL.

row_count

bigint

Nombre de lignes retournées au client par cette demande. Cette colonne n'accepte pas la valeur NULL.

prev_error

int

Dernière erreur générée pendant l'exécution de la demande. Cette colonne n'accepte pas la valeur NULL.

nest_level

int

Niveau d'imbrication du code en cours d'exécution sur la demande. Cette colonne n'accepte pas la valeur NULL.

granted_query_memory

int

Nombre de pages allouées à l'exécution d'une requête dans la demande. Cette colonne n'accepte pas la valeur NULL.

executing_managed_code

bit

Indique si cette demande est en train d'exécuter des objets CLR (Common Language Runtime) tels que des routines, des types et des déclencheurs. Cette valeur est définie pour toute la durée pendant laquelle un objet CLR réside dans la pile, même lorsqu'elle exécute Transact-SQL à partir du CLR. Cette colonne n'accepte pas la valeur NULL.

Autorisations

L'autorisation VIEW SERVER STATE est nécessaire sur le serveur.

ms177648.note(fr-fr,SQL.90).gifRemarque :
Si l'utilisateur a l'autorisation VIEW SERVER STATE sur le serveur, il affichera toutes les sessions en cours d'exécution sur l'instance de SQL Server ; sinon, l'utilisateur ne voit que la session où s'exécute sys.dm_exec_requests.

Cardinalités de la relation

De Pour Actif/Appliquer Relation

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Un-à-

zéro ou plusieurs

sys.dm_exec_requests

sys.dm_exec_sql_text(sql_handle)

CROSS APPLY

OUTER APPLY

Zéro ou un à

zéro ou un

sys.dm_exec_requests

sys.dm_exec_query_plan(plan_handle)

CROSS APPLY

OUTER APPLY

Zéro ou un à

zéro ou un

sys.dm_exec_requests

sys.dm_exec_cached_plans

plan_handle

Zéro ou un à

zéro ou un

sys.dm_exec_requests

sys.dm_exec_plan_attributes(plan_handle)

CROSS APPLY

OUTER APPLY

Zéro ou un à

zéro ou un

sys.dm_exec_requests

sys.databases

database_id

Un-à-un

sys.dm_exec_requests

sys.database_principals

user_id = principal_id

Un-à-un

sys.dm_exec_connections

sys.dm_exec_requests

id_connexion

Un-à-

zéro ou un

sys.dm_exec_requests

sys.dm_tran_active_transactions

transaction_id

Un-à-un

Exemples

A. Recherche du texte de la requête pour un lot en cours d'exécution

L'exemple suivant interroge sys.dm_exec_requests pour rechercher la requête pertinente et copier son sql_handle de la sortie.

SELECT * FROM sys.dm_exec_requests;
GO

Puis, pour obtenir le texte de l'instruction, utilisez le sql_handle copié avec la fonction système sys.dm_exec_sql_text(sql_handle).

SELECT * 
FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO

B. Recherche de tous les verrous que contient un lot en cours d'exécution

L'exemple suivant interroge sys.dm_exec_requests pour rechercher le lot pertinent et copier son transaction_id de la sortie.

SELECT * 
FROM sys.dm_exec_requests
GO

Puis, pour rechercher les informations de verrou, utilisez le transaction_id copié avec la fonction système sys.dm_tran_locks.

SELECT * 
FROM sys.dm_tran_locks 
WHERE request_owner_type = N'TRANSACTION' 
    AND request_owner_id = < copied transaction_id >;
GO

C. Recherche de toutes les demandes actuellement bloquées

L'exemple suivant interroge sys.dm_exec_requests pour rechercher des informations sur des demandes bloquées.

SELECT session_id ,status ,blocking_session_id
    ,wait_type ,wait_time ,wait_resource 
    ,transaction_id 
FROM sys.dm_exec_requests 
WHERE status = N'suspended';
GO

Voir aussi

Référence

Mappage des tables système SQL Server 2000 avec les vues du système SQL Server 2005
Fonctions et vues de gestion dynamique
Fonctions et vues de gestion dynamique liées à l'exécution
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Nouveau contenu :
  • Ajout du mappage de SQL Server 2000 à SQL Server 2005.
  • Ajout des exemples.
  • Ajout de la table Cardinalités des relations.
Contenu modifié :
  • Modification des descriptions de start_time, status, sql_handle, plan_handle, database_id, user_id, connection_id, transaction_id, context_info, scheduler_id, task_address, language, date_format, transaction_isolation_level, date_first, executing_managed_code.

5 décembre 2005

Nouveau contenu :
  • Un commentaire a été ajouté concernant le temps passé en mode préemptif.
Contenu modifié :
  • Correction du type de données de wait_type.