sys.dm_exec_requests (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data WarehouseouiParallel Data Warehouse

Retourne des informations sur chaque demande qui s'exécute dans SQL Server.

System_CAPS_ICON_note.jpg Remarque


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.

System_CAPS_ICON_note.jpg Remarque


Appeler à partir de Azure SQL Data Warehouse ou Parallel Data Warehouse, utilisez le nom sys.dm_pdw_nodes_exec_requests.

Nom de colonneType de donnéesDescription
session_idsmallintID de la session à laquelle cette demande est liée. N'accepte pas la valeur NULL.
request_idintID de la demande. Unique dans le contexte de la session. N'accepte pas la valeur NULL.
start_timedate/heureHorodateur lors la réception de la demande. N'accepte pas la valeur NULL.
statusnvarchar (30)Statut de la demande. Il peut s'agir de l'un des états suivants :

Arrière-plan
Exécution en cours
Exécutable
En état de veille
Suspendu

N'accepte pas la valeur NULL.
commandenvarchar (32)Identifie le type de commande en cours de traitement. Les types de commandes courants comprennent notamment :

SELECT
INSERT
UPDATE
DELETE
BACKUP LOG
BACKUP DATABASE
DBCC
FOR

Le texte de la demande peut être extrait à l'aide de sys.dm_exec_sql_text avec le paramètre sql_handle correspondant pour la demande. 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

N'accepte pas la valeur NULL.
sql_handlevarbinary(64)Table de hachage du texte SQL de la demande. Autorise la valeur NULL.
statement_start_offsetintNombre de caractères dans le traitement ou la procédure stockée en cours d'exécution où les instructions en cours d'exécution commencent. Cette valeur peut être utilisée avec les fonctions de gestion dynamique sql_handle, statement_end_offset et sys.dm_exec_sql_text pour extraire l'instruction en cours d'exécution de la demande. Autorise la valeur NULL.
statement_end_offsetintNombre de caractères dans le traitement ou la procédure stockée en cours d'exécution où les instructions en cours d'exécution se terminent. Cette valeur peut être utilisée avec les fonctions de gestion dynamique sql_handle, statement_end_offset et sys.dm_exec_sql_text pour extraire l'instruction en cours d'exécution de la demande. Autorise la valeur NULL.
plan_handlevarbinary(64)Table de hachage du plan pour l'exécution SQL. Autorise la valeur NULL.
database_idsmallintID de la base de données dans laquelle la requête s'exécute. N'accepte pas la valeur NULL.
user_idintID de l'utilisateur qui a envoyé la demande. N'accepte pas la valeur NULL.
connection_iduniqueidentifierID de la connexion à laquelle la demande est parvenue. Autorise la valeur NULL.
blocking_session_idsmallintID de la session qui bloque la demande. Si cette colonne est NULL, la demande n'est pas bloquée, ou les informations de session de la session bloquant 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é pour le moment en raison de transitions d'état de verrou interne.
wait_typenvarchar (60)Si la demande est actuellement bloquée, cette colonne retourne le type d'attente. Autorise la valeur NULL.

Pour plus d’informations sur les types d’attentes, consultez sys.dm_os_wait_stats (Transact-SQL).
wait_timeintSi la demande est actuellement bloquée, cette colonne retourne la durée de l'attente, en millisecondes. N'accepte pas la valeur NULL.
last_wait_typenvarchar (60)Si la demande a été bloquée précédemment, cette colonne indique le type de la dernière attente. N'accepte pas la valeur NULL.
wait_resourcenvarchar (256)Si la demande est actuellement bloquée, cette colonne retourne la ressource attendue par la demande. N'accepte pas la valeur NULL.
open_transaction_countintNombre de transactions ouvertes pour cette demande. N'accepte pas la valeur NULL.
open_resultset_countintNombre de jeux de résultats ouverts pour cette demande. N'accepte pas la valeur NULL.
transaction_idbigintID de la transaction dans laquelle cette demande s'exécute. N'accepte pas la valeur NULL.
context_infovarbinary (128)Valeur CONTEXT_INFO de la session. Autorise la valeur NULL.
percent_completeréelLe pourcentage de travail terminé pour les commandes suivantes :

ALTER INDEX REORGANIZE
Option AUTO_SHRINK avec ALTER DATABASE
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE ENCRYPTION

N'accepte pas la valeur NULL.
estimated_completion_timebigintInterne uniquement. N'accepte pas la valeur NULL.
cpu_timeintQuantité de temps UC (en millisecondes) utilisée par la demande. N'accepte pas la valeur NULL.
total_elapsed_timeintTemps total écoulé en millisecondes depuis l'arrivée de la demande. N'accepte pas la valeur NULL.
scheduler_idintID du planificateur qui planifie cette demande. N'accepte pas la valeur NULL.
task_addressvarbinary (8)Adresse mémoire de la tâche associée à la demande. Autorise la valeur NULL.
readsbigintNombre de lectures effectuées par la demande. N'accepte pas la valeur NULL.
writesbigintNombre d'écritures effectuées par la demande. N'accepte pas la valeur NULL.
logical_readsbigintNombre de lectures logiques effectuées par la demande. N'accepte pas la valeur NULL.
text_sizeintValeur du paramètre TEXTSIZE pour la demande. N'accepte pas la valeur NULL.
languenvarchar (128)Valeur du paramètre de langue pour la demande. Autorise la valeur NULL.
date_formatnvarchar(3)Valeur du paramètre DATEFORMAT pour la demande. Autorise la valeur NULL.
date_firstsmallintValeur du paramètre DATEFIRST pour la demande. N'accepte pas la valeur NULL.
quoted_identifierbits1 = QUOTED_IDENTIFIER est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
arithabortbits1 = ARITHABORT est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
ansi_null_dflt_onbits1 = ANSI_NULL_DFLT_ON est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
ansi_defaultsbits1 = ANSI_DEFAULTS est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
ansi_warningsbits1 = ANSI_WARNINGS est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
ansi_paddingbits1 = ANSI_PADDING est activé (ON) pour la demande.

Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
ansi_nullsbits1 = ANSI_NULLS est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
concat_null_yields_nullbits1 = CONCAT_NULL_YIELDS_NULL est activé (ON) pour la demande. Sinon, la valeur est 0.

N'accepte pas la valeur NULL.
transaction_isolation_levelsmallintNiveau d'isolation avec lequel la transaction pour cette demande est créée. N'accepte pas la valeur NULL.

0 = Non spécifié

1 = Lecture non validée

2 = Lecture validée

3 = Répétable

4 = Sérialisable

5 = Instantané
lock_timeoutintDélai d'attente de verrou externe pour la demande, en millisecondes. N'accepte pas la valeur NULL.
deadlock_priorityintParamètre DEADLOCK_PRIORITY de la demande. N'accepte pas la valeur NULL.
row_countbigintNombre de lignes retournées au client par cette demande. N'accepte pas la valeur NULL.
prev_errorintDernière erreur générée pendant l'exécution de la demande. N'accepte pas la valeur NULL.
nest_levelintNiveau d'imbrication actuel du code en cours d'exécution sur la demande. N'accepte pas la valeur NULL.
granted_query_memoryintNombre de pages allouées à l'exécution d'une requête dans la demande. N'accepte pas la valeur NULL.
executing_managed_codebitsIndique si une demande spécifique 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. N'accepte pas la valeur NULL.
group_idintID du groupe de charge de travail auquel cette requête appartient. N'accepte pas la valeur NULL.
query_hashbinary (8)La valeur de hachage binaire calculée sur la requête et utilisée pour identifier des requêtes avec une logique similaire. Vous pouvez utiliser le hachage de requête pour déterminer l'utilisation des ressources globale pour les requêtes qui diffèrent uniquement par les valeurs littérales.
query_plan_hashbinary (8)Valeur de hachage binaire calculée sur le plan d'exécution de requête et utilisée pour identifier des plans d'exécution de requête semblables. Vous pouvez utiliser le hachage de plan de requête pour rechercher le coût cumulatif de requêtes avec les plans d'exécution semblables.
statement_sql_handlevarbinary(64)S'applique à: SQL Server 2014 et SQL Server 2016.

Réservé pour un usage ultérieur.
statement_context_idbigintS'applique à: SQL Server 2014 et SQL Server 2016.

Réservé pour un usage ultérieur.
« pdw_node_id »intS’applique aux: Azure SQL Data Warehouse,Parallel Data Warehouse

L’identificateur pour le nœud de cette distribution.

Si l’utilisateur a VIEW SERVER STATE autorisation sur le serveur, l’utilisateur verra en cours d’exécution toutes les sessions sur l’instance de SQL Server; sinon, l’utilisateur verra uniquement la session active. VIEW SERVER STATEne peut pas être accordée dans Base de données SQL donc sys.dm_exec_requests est toujours limitée à la connexion actuelle.

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

L'exemple suivant interroge sys.dm_exec_requests afin de rechercher la requête qui vous intéresse et de copier son sql_handle de la sortie.

SELECT * FROM sys.dm_exec_requests;  
GO  

Puis, pour obtenir le texte d'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 maintenus par un lot en cours d'exécution

L’exemple suivant interroge sys.dm_exec_requests pour rechercher le lot et le copie intéressantes son transaction_id à partir de la sortie.

SELECT * FROM sys.dm_exec_requests;  
GO  

Pour rechercher des informations sur le verrouillage, utilisez ensuite copié transaction_id 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 bloquées actuellement

L’exemple suivant interroge sys.dm_exec_requests pour trouver des informations sur les 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  

Vues de gestion dynamique et fonctions (Transact-SQL)
Fonctions (Transact-SQL) et les vues de gestion dynamique liées à l’exécution
Sys.dm_os_memory_clerks (Transact-SQL)
Sys.dm_os_sys_info (Transact-SQL)
Sys.dm_exec_query_memory_grants (Transact-SQL)
Sys.dm_exec_query_plan (Transact-SQL)
Sys.dm_exec_sql_text (Transact-SQL)

Ajouts de la communauté

AJOUTER
Afficher: