Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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)