TechNet
Exporter (0) Imprimer
Développer tout

sys.dm_exec_cursors (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

Retourne des informations sur les curseurs ouverts dans diverses bases de données.

S'applique à : SQL Server (SQL Server 2008 via la version actuelle).
  
dm_exec_cursors (session_id | 0 )  

session_id | 0
ID de la session. Si session_id est spécifié, cette fonction retourne des informations sur les curseurs dans la session spécifiée.

Si 0 est spécifié, la fonction retourne des informations sur tous les curseurs dans toutes les sessions.

Nom de la colonneType de donnéesDescription
session_idintID de la session propriétaire de ce curseur.
cursor_idintID de l'objet curseur.
namenvarchar(256)Nom du curseur, défini par l'utilisateur.
propriétésnvarchar(256)Spécifie les propriétés du curseur. Les valeurs des propriétés suivantes sont concaténées pour former la valeur de cette colonne :

- Interface déclaration
- Type de curseur
- Accès simultané au curseur
- Étendue du curseur
- Niveau d'imbrication du curseur

Par exemple, la valeur retournée dans cette colonne peut être la suivante : "TSQL | Dynamic | Optimistic | Global (0)".
sql_handlevarbinary(64)Descripteur du texte du traitement qui a déclaré le curseur.
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.
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_start_offset et sys.dm_exec_sql_text pour extraire l'instruction en cours d'exécution de la demande.
plan_generation_numbigintNuméro de séquence permettant de distinguer les instances de plans après une recompilation.
creation_timedatetimeHeure de création du curseur.
is_openbitIndique si le curseur est ouvert.
is_async_populationbitSpécifie si le thread d'arrière-plan remplit toujours de manière asynchrone un curseur KEYSET ou STATIC.
is_close_on_commitbitSpécifie si le curseur a été déclaré à l'aide de CURSOR_CLOSE_ON_COMMIT.

1 = Le curseur est fermé à la fin de la transaction.
fetch_statusintRetourne le dernier état d'extraction du curseur. Il s'agit de la dernière valeur @@FETCH_STATUS retournée.
fetch_buffer_sizeintRetourne des informations sur la taille du tampon d'extraction.

1 = Curseurs Transact-SQL. Il est possible de définir une valeur supérieure pour les curseurs des API.
fetch_buffer_startintPour les curseurs FAST_FORWARD et DYNAMIC, retourne 0 si le curseur n'est pas ouvert ou s'il est positionné devant la première ligne. Sinon, retourne -1.

Pour les curseurs STATIC et KEYSET, retourne 0 si le curseur n'est pas ouvert et -1 si le curseur est positionné au-delà de la dernière ligne.

Sinon, retourne le numéro de la ligne où il est positionné.
ansi_positionintPosition du curseur dans le tampon d'extraction.
worker_timebigintTemps, en microsecondes, passés par les travaux qui exécutent ce curseur.
readsbigintNombre de lectures effectuées par le curseur.
writesbigintNombre d'écritures effectuées par le curseur.
dormant_durationbigintMillisecondes écoulées depuis le début de la dernière requête (ouverture ou extraction) sur ce curseur.

Nécessite l'autorisation VIEW SERVER STATE sur le serveur.

Le tableau ci-dessous fournit des informations sur l'interface de déclaration du curseur et inclut les valeurs possibles pour la colonne des propriétés.

PropriétéDescription
APILe curseur a été déclaré en utilisant une des API d'accès aux données (ODBC, OLEDB).
TSQLLe curseur a été déclaré à l'aide de la syntaxe Transact-SQL DECLARE CURSOR.

Le tableau ci-dessous fournit des informations sur le type du curseur et inclut les valeurs possibles pour la colonne des propriétés.

TypeDescription
KeysetLe curseur est déclaré comme Keyset.
DynamiqueLe curseur est déclaré comme dynamique.
SnapshotLe curseur est déclaré comme instantané ou statique.
Fast_ForwardLe curseur est déclaré comme curseur avant.

Le tableau ci-dessous fournit des informations sur l'accès concurrentiel au curseur et inclut les valeurs possibles pour la colonne des propriétés.

Accès concurrentielDescription
Read OnlyLe curseur est déclaré en lecture seule
Scroll LocksLe curseur utilise des défilements.
OptimisticLe curseur utilise l'accès concurrentiel optimiste.

Le tableau ci-dessous fournit des informations sur l'étendue du curseur et inclut les valeurs possibles pour la colonne des propriétés.

ÉtendueDescription
LocalSpécifie que l'étendue du curseur est locale pour le traitement d'instructions, la procédure stockée ou le déclencheur dans lequel il a été créé.
GlobalSpécifie que l'étendue du curseur est globale pour la connexion.

A.Détection des anciens curseurs

Cet exemple retourne des informations sur les curseurs ouverts sur le serveur pendant une durée supérieure aux 36 heures spécifiées.

SELECT creation_time, cursor_id, name, c.session_id, login_name   
FROM sys.dm_exec_cursors(0) AS c   
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id   
WHERE DATEDIFF(hh, c.creation_time, GETDATE()) > 36;  
GO  

Fonctions et vues de gestion dynamique (Transact-SQL)
Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)

Ajouts de la communauté

Afficher:
© 2016 Microsoft