sys.dm_exec_cursors (Transact-SQL)
Gibt Informationen zu den Cursorn zurück, die in verschiedenen Datenbanken geöffnet sind.
Syntax
dm_exec_cursors (session_id | 0 )
Argumente
session_id | 0
ID der Sitzung. Wenn session_id angegeben wird, gibt diese Funktion Informationen zu Cursorn in der angegebenen Sitzung zurück.Wenn 0 angegeben wird, gibt diese Funktion Informationen zu allen Cursorn für alle Sitzungen zurück.
Zurückgegebene Tabelle
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
session_id |
int |
ID der Sitzung, die diesen Cursor enthält. |
cursor_id |
int |
ID des Cursorobjekts. |
name |
nvarchar(256) |
Name des Cursors gemäß der Definition durch den Benutzer. |
properties |
nvarchar(256) |
Gibt die Eigenschaften des Cursors an. Die Werte der folgenden Eigenschaften werden zu einem Wert dieser Spalte verkettet:
Beispielsweise kann der in dieser Spalte zurückgegebene Wert "TSQL | Dynamic | Optimistic | Global (0)" lauten. |
sql_handle |
varbinary(64) |
Handle zum Text des Batches, durch den der Cursor deklariert wurde. |
statement_start_offset |
int |
Anzahl von Zeichen im derzeit ausgeführten Batch oder in der derzeit ausgeführten gespeicherten Prozedur, an der die derzeit ausgeführte Anweisung beginnt. Kann zusammen mit sql_handle, statement_end_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der zurzeit ausgeführten Anweisung für die Anforderung verwendet werden. |
statement_end_offset |
int |
Anzahl von Zeichen im derzeit ausgeführten Batch oder in der derzeit ausgeführten gespeicherten Prozedur, an der die derzeit ausgeführte Anweisung endet. Kann zusammen mit sql_handle, statement_start_offset und der dynamischen Verwaltungsfunktion sys.dm_exec_sql_text zum Abrufen der zurzeit ausgeführten Anweisung für die Anforderung verwendet werden. |
plan_generation_num |
bigint |
Eine Sequenznummer, anhand der nach einer Neukompilierung zwischen einzelnen Instanzen von Plänen unterschieden werden kann. |
creation_time |
datetime |
Der Timestamp, wann dieser Cursor erstellt wurde. |
is_open |
bit |
Gibt an, ob der Cursor geöffnet ist. |
is_async_population |
bit |
Gibt an, ob der Hintergrundthread weiterhin einen KEYSET- oder STATIC-Cursor asynchron auffüllt. |
is_close_on_commit |
bit |
Gibt an, ob der Cursor mithilfe von CURSOR_CLOSE_ON_COMMIT deklariert wurde. 1 = Cursor wird geschlossen, wenn die Transaktion endet. |
fetch_status |
int |
Gibt den letzten Abrufstatus des Cursors zurück. Dies ist der letzte zurückgegebene @@FETCH_STATUS-Wert. |
fetch_buffer_size |
int |
Gibt Informationen zur Größe des Fetchpuffers zurück. 1 = Transact-SQL-Cursor. Für API-Cursor kann ein höherer Wert festgelegt werden. |
fetch_buffer_start |
int |
Für FAST_FORWARD- und DYNAMIC-Cursor wird 0 zurückgegeben, falls der Cursor nicht geöffnet ist oder falls er vor der ersten Zeile positioniert ist. Andernfalls wird -1 zurückgegeben. Für STATIC- und KEYSET-Cursor wird 0 zurückgegeben, falls der Cursor nicht geöffnet ist, und -1, falls der Cursor nach der letzten Zeile positioniert ist. Andernfalls wird die Zeilennummer zurückgegeben, in der der Cursor positioniert ist. |
ansi_position |
int |
Cursorposition innerhalb des Fetchpuffers. |
worker_time |
bigint |
Der Zeitaufwand in Mikrosekunden zum Ausführen dieses Cursors durch den Arbeitsthread. |
reads |
bigint |
Anzahl von Lesevorgängen, die der Cursor ausgeführt hat. |
writes |
bigint |
Anzahl von Schreibvorgängen, die der Cursor ausgeführt hat. |
dormant_duration |
bigint |
Millisekunden seit dem Start der letzten Abfrage (Öffnen oder Abrufen) für diesen Cursor. |
Berechtigungen
Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.
Hinweise
Die folgende Tabelle stellt Informationen zur Cursordeklarationsschnittstelle bereit und enthält die möglichen Werte für die Eigenschaftenspalte.
Eigenschaft |
Beschreibung |
---|---|
API |
Cursor wurde mithilfe einer der Datenzugriffs-APIs (ODBC, OLE DB) deklariert. |
TSQL |
Cursor wurde mithilfe der DECLARE CURSOR-Syntax von Transact-SQL deklariert. |
Die folgende Tabelle stellt Informationen zum Cursortyp bereit und enthält die möglichen Werte für die Eigenschaftenspalte.
Typ |
Beschreibung |
---|---|
Keyset |
Cursor wurde als Keyset deklariert. |
Dynamic |
Cursor wurde als dynamisch deklariert. |
Snapshot |
Cursor wurde als Snapshot oder statisch deklariert. |
Fast_Forward |
Cursor wurde als Vorwärtscursor deklariert. |
Die folgende Tabelle stellt Informationen zur Cursorparallelität bereit und enthält die möglichen Werte für die Eigenschaftenspalte.
Parallelität |
Beschreibung |
---|---|
Read Only |
Cursor wurde als schreibgeschützt deklariert. |
Scroll Locks |
Cursor verwendet Scrollsperren. |
Optimistic |
Cursor verwendet die Steuerung durch vollständige Parallelität. |
Die folgende Tabelle stellt Informationen zum Cursorbereich bereit und enthält die möglichen Werte für die Eigenschaftenspalte.
Bereich |
Beschreibung |
---|---|
Lokal |
Gibt an, dass der Gültigkeitsbereich des Cursors lokal zu dem Batch, der gespeicherten Prozedur oder dem Trigger ist, in dem bzw. in der er erstellt wurde. |
Global |
Gibt an, dass der Gültigkeitsbereich des Cursors global zur Verbindung ist. |
Beispiele
A. Erkennen alter Cursor
Dieses Beispiel gibt Informationen zu Cursorn zurück, die auf dem Server länger als über den angegebenen Zeitraum von 36 Stunden hinweg geöffnet waren.
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