sys.dm_exec_cursors (Transact-SQL)
Restituisce informazioni sui cursori aperti in vari database.
Si applica a: SQL Server (da SQL Server 2008 a versione corrente). |
Sintassi
dm_exec_cursors (session_id | 0 )
Argomenti
session_id | 0
ID della sessione. Se si specifica session_id, questa funzione restituisce informazioni sui cursori nella sessione specificata.Se viene specificato 0, la funzione restituisce informazioni su tutti i cursori per tutte le sessioni.
Tabella restituita
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
session_id |
int |
ID della sessione che include il cursore. |
cursor_id |
int |
ID dell'oggetto cursore. |
name |
nvarchar(256) |
Nome del cursore definito dall'utente. |
proprietà |
nvarchar(256) |
Specifica le proprietà del cursore. I valori delle proprietà seguenti vengono concatenati per comporre il valore di questa colonna:
Ad esempio, il valore restituito in questa colonna potrebbe essere "TSQL | Dynamic | Optimistic | Global (0)". |
sql_handle |
varbinary(64) |
Handle per il testo del batch che ha dichiarato il cursore. |
statement_start_offset |
int |
Numero di caratteri nella stored procedure o nel batch attualmente in esecuzione in cui inizia l'istruzione in esecuzione. Può essere utilizzata in combinazione con la colonna sql_handle, la colonna statement_end_offset e la funzione a gestione dinamica sys.dm_exec_sql_text per recuperare l'istruzione in esecuzione per la richiesta. |
statement_end_offset |
int |
Numero di caratteri nella stored procedure o nel batch attualmente in esecuzione in cui termina l'istruzione in esecuzione. Può essere utilizzata in combinazione con la colonna sql_handle, la colonna statement_start_offset e la funzione a gestione dinamica sys.dm_exec_sql_text per recuperare l'istruzione in esecuzione per la richiesta. |
plan_generation_num |
bigint |
Numero di sequenza utilizzabile per distinguere le istanze dei piani dopo la ricompilazione. |
creation_time |
datetime |
Timestamp relativo alla creazione del cursore. |
is_open |
bit |
Specifica se il cursore è aperto. |
is_async_population |
bit |
Specifica se il thread in background sta ancora popolando un cursore KEYSET o STATIC in modo asincrono. |
is_close_on_commit |
bit |
Specifica se il cursore è stato dichiarato tramite CURSOR_CLOSE_ON_COMMIT. 1 = Il cursore verrà chiuso al termine della transazione. |
fetch_status |
int |
Restituisce l'ultimo stato di recupero del cursore. Si tratta dell'ultimo valore @@FETCH_STATUS restituito. |
fetch_buffer_size |
int |
Restituisce le informazioni sulle dimensioni del buffer di recupero. 1 = Cursori Transact-SQL. Può essere impostato su un valore più elevato per i cursori API. |
fetch_buffer_start |
int |
Per i cursori FAST_FORWARD e DYNAMIC, restituisce 0 se il cursore non è aperto o se è posizionato prima della riga iniziale. In caso contrario, restituisce -1. Per i cursori STATIC e KEYSET, restituisce 0 se il cursore non è aperto e -1 se il cursore è posizionato oltre l'ultima riga. In caso contrario, restituisce il numero di riga in cui è posizionato. |
ansi_position |
int |
Posizione del cursore all'interno del buffer di recupero. |
worker_time |
bigint |
Tempo impiegato, in microsecondi, dai thread worker che eseguono il cursore. |
reads |
bigint |
Numero di letture eseguite dal cursore. |
writes |
bigint |
Numero di scritture eseguite dal cursore. |
dormant_duration |
bigint |
Millisecondi trascorsi a partire dall'avvio dell'ultima query (apertura o recupero) sul cursore. |
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel server.
Osservazioni
Nella tabella seguente vengono fornite informazioni sull'interfaccia di dichiarazione del cursore e vengono indicati i possibili valori per la colonna delle proprietà.
Proprietà |
Descrizione |
---|---|
API |
Il cursore è stato dichiarato tramite una delle API di accesso ai dati (ODBC, OLEDB). |
TSQL |
Il cursore è stato dichiarato tramite la sintassi Transact-SQL DECLARE CURSOR. |
Nella tabella seguente vengono fornite informazioni sul tipo di cursore e vengono inclusi i possibili valori per la colonna delle proprietà.
Tipo |
Descrizione |
---|---|
Keyset |
Il cursore è stato dichiarato come Keyset. |
Dynamic |
Il cursore è stato dichiarato come Dynamic. |
Snapshot |
Il cursore è stato dichiarato come Snapshot o Static. |
Fast_Forward |
Il cursore è stato dichiarato come Fast Forward. |
Nella tabella seguente vengono fornite informazioni sulla concorrenza dei cursori e vengono inclusi i possibili valori per la colonna delle proprietà.
Concorrenza |
Descrizione |
---|---|
Read Only |
Il cursore è stato dichiarato come di sola lettura. |
Scroll Locks |
Il cursore utilizza i blocchi di scorrimento. |
Optimistic |
Il cursore utilizza il controllo della concorrenza ottimistica. |
Nella tabella seguente vengono fornite informazioni sullo scopo dei cursori e vengono inclusi i possibili valori per la colonna delle proprietà.
Ambito |
Descrizione |
---|---|
Local |
Specifica che l'ambito del cursore è locale rispetto al batch, alla stored procedure o al trigger in cui il cursore è stato creato. |
Global |
Specifica che l'ambito del cursore è globale rispetto alla connessione. |
Esempi
A.Individuazione dei cursori meno recenti
Nell'esempio seguente vengono restituite informazioni sui cursori che sono rimasti aperti nel server oltre il periodo di tempo specificato di 36 ore.
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
Vedere anche
Riferimento
Funzioni e viste a gestione dinamica (Transact-SQL)
Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)