sys.dm_exec_requests (Transact-SQL)
Restituisce informazioni su ciascuna richiesta in esecuzione all'interno di SQL Server.
Nota
Per eseguire codice esterno a SQL Server, ad esempio stored procedure estese e query distribuite, è necessario che un thread venga eseguito esternamente al controllo dell'utilità di pianificazione in modalità non preemptive. A tale scopo, un thread di lavoro passa alla modalità preemptive. I valori temporali restituiti da DMV non includono il tempo trascorso in modalità preemptive.
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
session_id |
smallint |
ID della sessione a cui la richiesta è correlata. Non sono ammessi valori Null. |
request_id |
int |
ID della richiesta. Valore univoco nel contesto della sessione. Non sono ammessi valori Null. |
start_time |
datetime |
Timestamp relativo all'arrivo della richiesta. Non sono ammessi valori Null. |
status |
nvarchar(30) |
Stato della richiesta. Di seguito sono riportati i possibili valori:
Non sono ammessi valori Null. |
command |
nvarchar(16) |
Identifica il tipo di comando corrente in corso di elaborazione. I tipi di comandi più comuni sono i seguenti:
Il testo della richiesta può essere recuperato tramite sys.dm_exec_sql_text con la colonna sql_handle corrispondente per la richiesta. I processi interni di sistema impostano il comando in base al tipo di attività effettuata. Di seguito sono riportate le attività:
Non sono ammessi valori Null. |
sql_handle |
varbinary(64) |
Mappa hash del testo SQL della richiesta. Ammette valori Null. |
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. Ammette valori Null. |
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_end_offset e la funzione a gestione dinamica sys.dm_exec_sql_text per recuperare l'istruzione in esecuzione per la richiesta. Ammette valori Null. |
plan_handle |
varbinary(64) |
Mappa hash del piano per l'esecuzione SQL. Ammette valori Null. |
database_id |
smallint |
ID del database utilizzato per eseguire la richiesta. Non sono ammessi valori Null. |
user_id |
int |
ID dell'utente che ha inviato la richiesta. Non sono ammessi valori Null. |
connection_id |
uniqueidentifier |
ID della connessione nella quale è arrivata la richiesta. Ammette valori Null. |
blocking_session_id |
smallint |
ID della sessione che sta bloccando la richiesta. Se questa colonna è NULL, la richiesta non è bloccata oppure le informazioni sulla sessione da cui è bloccata non sono disponibili o non possono essere identificate. -2 = La risorsa di blocco appartiene a una transazione distribuita orfana. -3 = La risorsa di blocco appartiene a una transazione di recupero posticipata. -4 = Al momento non è stato possibile determinare l'ID sessione del proprietario del latch di blocco a causa di transizioni nello stato del latch interno. |
wait_type |
nvarchar(60) |
Se la richiesta è momentaneamente bloccata, questa colonna restituisce il tipo di attesa. Ammette valori Null. |
wait_time |
int |
Se la richiesta è momentaneamente bloccata, questa colonna restituisce la durata dell'attesa corrente espressa in millisecondi. Non sono ammessi valori Null. |
last_wait_type |
nvarchar(60) |
Se la richiesta è stata precedentemente bloccata, questa colonna restituisce il tipo dell'ultima attesa. Non sono ammessi valori Null. |
wait_resource |
nvarchar(256) |
Se la richiesta è momentaneamente bloccata, questa colonna restituisce la risorsa per la quale la richiesta è in attesa. Non sono ammessi valori Null. |
open_transaction_count |
int |
Numero di transazioni aperte per la richiesta. Non sono ammessi valori Null. |
open_resultset_count |
int |
Numero di set di risultati aperti per la richiesta. Non sono ammessi valori Null. |
transaction_id |
bigint |
ID della transazione nella quale viene eseguita la richiesta. Non sono ammessi valori Null. |
context_info |
varbinary(128) |
Valore di CONTEXT_INFO della sessione. Ammette valori Null. |
percent_complete |
real |
Percentuale di lavoro completata per i comandi seguenti:
Non sono ammessi valori Null. |
estimated_completion_time |
bigint |
Solo per uso interno. Non sono ammessi valori Null. |
cpu_time |
int |
Tempo della CPU utilizzato dalla richiesta, espresso in millisecondi. Non sono ammessi valori Null. |
total_elapsed_time |
int |
Tempo totale, in millisecondi, trascorso dall'arrivo della richiesta. Non sono ammessi valori Null. |
scheduler_id |
int |
ID dell'utilità di pianificazione che sta pianificando la richiesta. Non sono ammessi valori Null. |
task_address |
varbinary(8) |
Indirizzo di memoria allocato all'attività associata alla richiesta. Ammette valori Null. |
reads |
bigint |
Numero di letture effettuate dalla richiesta. Non sono ammessi valori Null. |
writes |
bigint |
Numero di scritture effettuate dalla richiesta. Non sono ammessi valori Null. |
logical_reads |
bigint |
Numero di letture logiche effettuate dalla richiesta. Non sono ammessi valori Null. |
text_size |
int |
Impostazione di TEXTSIZE per la richiesta. Non sono ammessi valori Null. |
language |
nvarchar(128) |
Impostazione di LANGUAGE per la richiesta. Ammette valori Null. |
date_format |
nvarchar(3) |
Impostazione di DATEFORMAT per la richiesta. Ammette valori Null. |
date_first |
smallint |
Impostazione di DATEFIRST per la richiesta. Non sono ammessi valori Null. |
quoted_identifier |
bit |
1 = QUOTED_IDENTIFIER è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
arithabort |
bit |
1 = ARITHABORT è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
ansi_null_dflt_on |
bit |
1 = ANSI_NULL_DFLT_ON è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
ansi_defaults |
bit |
1 = ANSI_DEFAULTS è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
ansi_warnings |
bit |
1 = ANSI_WARNINGS è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
ansi_padding |
bit |
1 = ANSI_PADDING è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
ansi_nulls |
bit |
1 = ANSI_NULLS è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
concat_null_yields_null |
bit |
1 = CONCAT_NULL_YIELDS_NULL è impostata su ON per la richiesta. Negli altri casi è 0. Non sono ammessi valori Null. |
transaction_isolation_level |
smallint |
Livello di isolamento con cui è stata creata la transazione per questa richiesta. Non sono ammessi valori Null. |
lock_timeout |
int |
Periodo di timeout del blocco, espresso in millisecondi, per la richiesta. Non sono ammessi valori Null. |
deadlock_priority |
int |
Impostazione di DEADLOCK_PRIORITY per la richiesta. Non ammette valori Null. |
row_count |
bigint |
Numero di righe restituite al client dalla richiesta. Non sono ammessi valori Null. |
prev_error |
int |
Ultimo errore che si è verificato durante l'esecuzione della richiesta. Non ammette valori Null. |
nest_level |
int |
Livello di nidificazione corrente del codice eseguito nella richiesta. Non sono ammessi valori Null. |
granted_query_memory |
int |
Numero di pagine allocate all'esecuzione di una query nella richiesta. Non sono ammessi valori Null. |
executing_managed_code |
bit |
Indica se una richiesta specifica sta eseguendo oggetti CLR (Common Language Runtime) quali routine, tipi e trigger. Il valore rimane impostato per l'intero periodo di permanenza di un oggetto CLR nello stack, anche durante l'esecuzione di istruzioni Transact-SQL internamente a CLR. Non sono ammessi valori Null. |
group_id |
int |
ID del gruppo del carico di lavoro a cui appartiene la query. Non sono ammessi valori Null. |
query_hash |
binary(8) |
Valore hash binario calcolato sulla query che consente di identificare query con logica analoga. È possibile utilizzare il valore hash della query per determinare l'utilizzo delle risorse aggregate per query che differiscono solo per valori letterali. Per ulteriori informazioni, vedere Ricerca e ottimizzazione di query analoghe tramite valori hash della query e del piano di query. |
query_plan_hash |
binary(8) |
Valore hash binario calcolato sul piano di esecuzione di query che consente di identificare piani di esecuzioni analoghi. È possibile utilizzare il valore hash di query per individuare il costo cumulativo di query con piani di esecuzione analoghi. Per ulteriori informazioni, vedere Ricerca e ottimizzazione di query analoghe tramite valori hash della query e del piano di query. |
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel server.
Nota
Se si dispone dell'autorizzazione VIEW SERVER STATE per il server, è possibile visualizzare tutte le sessioni in esecuzione nell'istanza di SQL Server. In caso contrario, è possibile visualizzare solo la sessione corrente.
Esempi
A. Ricerca del testo della query per un batch in esecuzione
Nell'esempio seguente viene eseguita una query su sys.dm_exec_requests per trovare la query specifica e copiare sql_handle dall'output.
SELECT * FROM sys.dm_exec_requests;
GO
Per ottenere il testo dell'istruzione, utilizzare il sql_handle copiato con la funzione di sistema sys.dm_exec_sql_text(sql_handle).
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Ricerca di tutti i blocchi contenuti in un batch in esecuzione
Nell'esempio seguente viene eseguita una query su sys.dm_exec_requests per trovare il batch specifico e copiare transaction_id dall'output.
SELECT * FROM sys.dm_exec_requests;
GO
Per individuare le informazioni di blocco, utilizzare transaction_id copiato con la funzione di sistema sys.dm_tran_locks.
SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
AND request_owner_id = < copied transaction_id >;
GO
C. Ricerca di tutte le richieste attualmente bloccate
Nell'esempio seguente viene eseguita una query su sys.dm_exec_requests per individuare le informazioni relative alle richieste bloccate.
SELECT session_id ,status ,blocking_session_id
,wait_type ,wait_time ,wait_resource
,transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';
GO
Vedere anche