sys.dm_exec_cursors (Transact-SQL)sys.dm_exec_cursors (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Retourne des informations sur les curseurs ouverts dans diverses bases de données.Returns information about the cursors that are open in various databases.

SyntaxeSyntax


dm_exec_cursors (session_id | 0 )  

ArgumentsArguments

session_id | 0session_id | 0
ID de la session.ID of the session. Si session_id est spécifié, cette fonction retourne des informations sur les curseurs dans la session spécifiée.If session_id is specified, this function returns information about cursors in the specified session.

Si 0 est spécifié, la fonction retourne des informations sur tous les curseurs dans toutes les sessions.If 0 is specified, the function returns information about all cursors for all sessions.

Table retournéeTable Returned

Nom de colonneColumn name Type de donnéesData type DescriptionDescription
session_idsession_id intint ID de la session propriétaire de ce curseur.ID of the session that holds this cursor.
cursor_idcursor_id intint ID de l'objet curseur.ID of the cursor object.
nomname nvarchar (256)nvarchar(256) Nom du curseur, défini par l'utilisateur.Name of the cursor as defined by the user.
propriétésproperties nvarchar (256)nvarchar(256) Spécifie les propriétés du curseur.Specifies the properties of the cursor. Les valeurs des propriétés suivantes sont concaténées pour former la valeur de cette colonne :The values of the following properties are concatenated to form the value of this column:
Interface déclarationDeclaration Interface
Type de curseurCursor Type
Accès simultané au curseurCursor Concurrency
Étendue du curseurCursor scope
Niveau d'imbrication du curseurCursor nesting level

Par exemple, la valeur retournée dans cette colonne peut être « TSQL | Dynamique | Optimiste | Global (0) ».For example, the value returned in this column might be "TSQL | Dynamic | Optimistic | Global (0)".
sql_handlesql_handle varbinary(64)varbinary(64) Descripteur du texte du traitement qui a déclaré le curseur.Handle to the text of the batch that declared the cursor.
statement_start_offsetstatement_start_offset intint Nombre 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.Number of characters into the currently executing batch or stored procedure at which the currently executing statement starts. Peut être utilisé avec le sql_handle, le statement_end_offsetet le sys.dm_exec_sql_text fonction de gestion dynamique pour extraire l’instruction en cours d’exécution de la demande.Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request.
statement_end_offsetstatement_end_offset intint Nombre 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.Number of characters into the currently executing batch or stored procedure at which the currently executing statement ends. Peut être utilisé avec le sql_handle, le statement_start_offsetet le sys.dm_exec_sql_text fonction de gestion dynamique pour extraire l’instruction en cours d’exécution de la demande.Can be used together with the sql_handle, the statement_start_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request.
plan_generation_numplan_generation_num bigintbigint Numéro de séquence permettant de distinguer les instances de plans après une recompilation.A sequence number that can be used to distinguish between instances of plans after recompilation.
creation_timecreation_time datetimedatetime Heure de création du curseur.Timestamp when this cursor was created.
is_openis_open bitbit Indique si le curseur est ouvert.Specifies whether the cursor is open.
is_async_populationis_async_population bitbit Spécifie si le thread d'arrière-plan remplit toujours de manière asynchrone un curseur KEYSET ou STATIC.Specifies whether the background thread is still asynchronously populating a KEYSET or STATIC cursor.
is_close_on_commitis_close_on_commit bitbit Spécifie si le curseur a été déclaré à l'aide de CURSOR_CLOSE_ON_COMMIT.Specifies whether the cursor was declared by using CURSOR_CLOSE_ON_COMMIT.

1 = Le curseur est fermé à la fin de la transaction.1 = Cursor will be closed when the transaction ends.
FETCH_STATUSfetch_status intint Retourne le dernier état d'extraction du curseur.Returns last fetch status of the cursor. Il s’agit du dernier retourné@FETCH_STATUS valeur.This is the last returned @@FETCH_STATUS value.
fetch_buffer_sizefetch_buffer_size intint Retourne des informations sur la taille du tampon d'extraction.Returns information about the size of the fetch buffer.

1 = Curseurs Transact-SQL.1 = Transact-SQL cursors. Il est possible de définir une valeur supérieure pour les curseurs des API.This can be set to a higher value for API cursors.
fetch_buffer_startfetch_buffer_start intint Pour 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.For FAST_FORWARD and DYNAMIC cursors, it returns 0 if the cursor is not open or if it is positioned before the first row. Sinon, retourne -1.Otherwise, it returns -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.For STATIC and KEYSET cursors, it returns 0 if the cursor is not open, and -1 if the cursor is positioned beyond the last row.

Sinon, retourne le numéro de la ligne où il est positionné.Otherwise, it returns the row number in which it is positioned.
ansi_positionansi_position intint Position du curseur dans le tampon d'extraction.Cursor position within the fetch buffer.
worker_timeworker_time bigintbigint Temps, en microsecondes, passés par les travaux qui exécutent ce curseur.Time spent, in microseconds, by the workers executing this cursor.
lecturesreads bigintbigint Nombre de lectures effectuées par le curseur.Number of reads performed by the cursor.
écritureswrites bigintbigint Nombre d'écritures effectuées par le curseur.Number of writes performed by the cursor.
dormant_durationdormant_duration bigintbigint Millisecondes écoulées depuis le début de la dernière requête (ouverture ou extraction) sur ce curseur.Milliseconds since the last query (open or fetch) on this cursor was started.

PermissionsPermissions

requièrent l'autorisation VIEW SERVER STATE sur le serveur.Requires VIEW SERVER STATE permission on the server.

NotesRemarks

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.The following table provides information about the cursor declaration interface and includes the possible values for the properties column.

PropriétéProperty DescriptionDescription
APIAPI Le curseur a été déclaré en utilisant une des API d'accès aux données (ODBC, OLEDB).Cursor was declared by using one of the data access APIs (ODBC, OLEDB).
TSQLTSQL Le curseur a été déclaré à l'aide de la syntaxe Transact-SQL DECLARE CURSOR.Cursor was declared by using the Transact-SQL DECLARE CURSOR syntax.

Le tableau ci-dessous fournit des informations sur le type du curseur et inclut les valeurs possibles pour la colonne des propriétés.The following table provides information about the cursor type and includes the possible values for the properties column.

TypeType DescriptionDescription
KeysetKeyset Le curseur est déclaré comme Keyset.Cursor was declared as Keyset.
DynamiqueDynamic Le curseur est déclaré comme dynamique.Cursor was declared as Dynamic.
SnapshotSnapshot Le curseur est déclaré comme instantané ou statique.Cursor was declared as Snapshot or Static.
Fast_ForwardFast_Forward Le curseur est déclaré comme curseur avant.Cursor was declared as Fast Forward.

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.The following table provides information about cursor concurrency and includes the possible values for the properties column.

Accès concurrentielConcurrency DescriptionDescription
Read OnlyRead Only Le curseur est déclaré en lecture seuleCursor was declared as read-only.
Scroll LocksScroll Locks Le curseur utilise des défilements.Cursor uses scroll locks.
OptimisticOptimistic Le curseur utilise l'accès concurrentiel optimiste.Cursor uses optimistic concurrency control.

Le tableau ci-dessous fournit des informations sur l'étendue du curseur et inclut les valeurs possibles pour la colonne des propriétés.The following table provides information about cursor scope and includes the possible values for the properties column.

PortéeScope DescriptionDescription
LocalLocal Spé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éé.Specifies that the scope of the cursor is local to the batch, stored procedure, or trigger in which the cursor was created.
GlobalGlobal Spécifie que l'étendue du curseur est globale pour la connexion.Specifies that the scope of the cursor is global to the connection.

ExemplesExamples

A.A. Détection des anciens curseursDetecting old cursors

Cet exemple retourne des informations sur les curseurs ouverts sur le serveur pendant une durée supérieure aux 36 heures spécifiées.This example returns information about cursors that have been open on the server longer than the specified time of 36 hours.

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  

Voir aussiSee Also

Fonctions et vues de gestion dynamique (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Les fonctions et vues de gestion dynamique ( liées à l’exécution Transact-SQL ) Execution Related Dynamic Management Views and Functions (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)sys.dm_exec_sessions (Transact-SQL)