sys.dm_exec_cursors (Transact-SQL)

Van toepassing op:SQL Server

Geeft informatie terug over de cursors die open zijn in verschillende databases.

Syntax

  
dm_exec_cursors (session_id | 0 )  

Arguments

session_id | 0
Id van de sessie. Als session_id is gespecificeerd, geeft deze functie informatie terug over cursors in de gespecificeerde sessie.

Als 0 wordt gespecificeerd, geeft de functie informatie terug over alle cursors voor alle sessies.

Tabel geretourneerd

Kolomnaam Gegevenstype Description
session_id int ID van de sessie die deze cursor bevat.
cursor_id int ID van het cursorobject.
name nvarchar(256) De naam van de cursor zoals gedefinieerd door de gebruiker.
eigenschappen nvarchar(256) Specificeert de eigenschappen van de cursor. De waarden van de volgende eigenschappen worden samengevoegd tot de waarde van deze kolom:
Verklaring Interface
Cursortype
Cursor Gelijktijdigheid
Cursorscope
Cursor-nestingsniveau

Bijvoorbeeld, de waarde die in deze kolom wordt geretourneerd kan zijn "TSQL | Dynamisch | Optimistisch | Global (0)".
sql_handle varbinary(64) Handle naar de tekst van de batch die de cursor declareerde.
statement_start_offset int Aantal tekens in de momenteel uitvoerende batch of opgeslagen procedure waarop de momenteel uitvoerende instructie begint. Kan samen met de sql_handle, de statement_end_offseten de sys.dm_exec_sql_text dynamische beheerfunctie worden gebruikt om de momenteel uitgevoerde instructie voor de aanvraag op te halen.
statement_end_offset int Aantal tekens in de momenteel uitvoerende batch of opgeslagen procedure waarbij de momenteel uitvoerende instructie eindigt. Kan samen met de sql_handle, de statement_start_offseten de sys.dm_exec_sql_text dynamische beheerfunctie worden gebruikt om de momenteel uitgevoerde instructie voor de aanvraag op te halen.
plan_generation_num bigint Een volgnummer dat kan worden gebruikt om onderscheid te maken tussen instanties van plannen na hercompilatie.
creation_time datetime Tijdstempel wanneer deze cursor is gemaakt.
is_open bit Geeft aan of de cursor open is.
is_async_population bit Geeft aan of de achtergronddraad nog steeds asynchroon een KEYSET- of STATIC-cursor vult.
is_close_on_commit bit Specificeert of de cursor is gedeclareerd door gebruik te maken van CURSOR_CLOSE_ON_COMMIT.

1 = De cursor wordt gesloten wanneer de transactie eindigt.
fetch_status int Geeft de status van de cursor de last fetch terug. Dit is de laatste teruggegeven @@FETCH_STATUS waarde.
fetch_buffer_size int Geeft informatie terug over de grootte van de fetchbuffer.

1 = Transact-SQL cursors. Dit kan worden ingesteld op een hogere waarde voor API-cursors.
fetch_buffer_start int Voor FAST_FORWARD en DYNAMISCHE cursors geeft hij 0 terug als de cursor niet open is of als hij vóór de eerste rij staat. Anders geeft het -1 terug.

Voor STATIC en KEYSET-cursors geeft het 0 terug als de cursor niet open is, en -1 als de cursor voorbij de laatste rij staat.

Anders geeft het het rijnummer terug waarin het zich bevindt.
ansi_position int Cursorpositie binnen de fetchbuffer.
worker_time bigint Tijd besteed, in microseconden, door de arbeiders die deze cursor uitvoeren.
Leest bigint Aantal leesopdrachten uitgevoerd door de cursor.
Schrijft bigint Aantal schrijfopdrachten uitgevoerd door de cursor.
dormant_duration bigint Milliseconden sinds de laatste query (open of fetch) op deze cursor werd gestart.

Permissions

Vereist VIEW SERVER-STATUS-toestemming op de server.

Machtigingen voor SQL Server 2022 en hoger

Vereist VIEW SERVER PERFORMANCE STATE toestemming op de server.

Remarks

De volgende tabel geeft informatie over de cursordeclaratie-interface en bevat de mogelijke waarden voor de kolom eigenschappen.

Property Description
API Cursor werd gedeclareerd met behulp van een van de data-toegangs-API's (ODBC, OLEDB).
TSQL Cursor werd gedeclareerd door gebruik te maken van de Transact-SQL DECLARE CURSOR-syntaxis.

De volgende tabel geeft informatie over het cursortype en bevat de mogelijke waarden voor de kolom eigenschappen.

Typ Description
Keyset Cursor werd verklaard als Keyset.
Dynamic Cursor werd als dynamisch verklaard.
Momentopname Cursor werd gedeclareerd als Snapshot of Statisch.
Fast_Forward Cursor werd als Fast Forward aangemerkt.

De volgende tabel geeft informatie over cursorgelijktijdigheid en bevat de mogelijke waarden voor de kolom eigenschappen.

Concurrency Description
Alleen lezen Cursor werd als alleen-lezen verklaard.
Scroll Locks De cursor gebruikt scroll locks.
Optimistisch De cursor gebruikt optimistische gelijktijdigheidscontrole.

De volgende tabel geeft informatie over de cursorscope en bevat de mogelijke waarden voor de kolom eigenschappen.

Scope Description
Local Specificeert dat de scope van de cursor lokaal is ten opzichte van de batch, opgeslagen procedure of trigger waarin de cursor is aangemaakt.
Global Geeft aan dat de scope van de cursor globaal is ten opzichte van de verbinding.

Examples

A. Oude cursors detecteren

Dit voorbeeld geeft informatie over cursors die langer dan de opgegeven tijd van 36 uur op de server open zijn geweest.

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  

Zie ook

Dynamische Beheerweergaven en -functies (Transact-SQL)
uitvoeringsgerelateerde dynamische beheerweergaven en -functies (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)