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 questa DMW non includono il tempo trascorso in modalità preemptive.
Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Azure (versione iniziale tramite versione corrente). |
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
session_id |
smallint |
ID della sessione a cui la richiesta è correlata. Non ammette valori Null. |
request_id |
int |
ID della richiesta. Valore univoco nel contesto della sessione. Non ammette valori Null. |
start_time |
datetime |
Timestamp relativo all'arrivo della richiesta. Non ammette valori Null. |
status |
nvarchar(30) |
Stato della richiesta. Di seguito sono riportati i possibili valori:
Non ammette i valori Null. |
command |
nvarchar(32) |
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 ammette 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 ammette valori Null. |
user_id |
int |
ID dell'utente che ha inviato la richiesta. Non ammette 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, in questa colonna viene restituito il tipo di attesa. Ammette valori Null. Per informazioni sui tipi di attese, vedere sys.dm_os_wait_stats (Transact-SQL). |
wait_time |
int |
Se la richiesta è momentaneamente bloccata, in questa colonna viene restituita la durata dell'attesa corrente espressa in millisecondi. Non ammette valori Null. |
last_wait_type |
nvarchar(60) |
Se la richiesta è stata precedentemente bloccata, questa colonna restituisce il tipo dell'ultima attesa. Non ammette valori Null. |
wait_resource |
nvarchar(256) |
Se la richiesta è momentaneamente bloccata, questa colonna restituisce la risorsa per la quale la richiesta è in attesa. Non ammette valori Null. |
open_transaction_count |
int |
Numero di transazioni aperte per la richiesta. Non ammette valori Null. |
open_resultset_count |
int |
Numero di set di risultati aperti per la richiesta. Non ammette valori Null. |
transaction_id |
bigint |
ID della transazione nella quale viene eseguita la richiesta. Non ammette 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 ammette i valori Null. |
estimated_completion_time |
bigint |
Solo per uso interno. Non ammette i valori Null. |
cpu_time |
int |
Tempo della CPU utilizzato dalla richiesta, espresso in millisecondi. Non ammette valori Null. |
total_elapsed_time |
int |
Tempo totale, in millisecondi, trascorso dall'arrivo della richiesta. Non ammette valori Null. |
scheduler_id |
int |
ID dell'utilità di pianificazione che sta pianificando la richiesta. Non ammette 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 ammette valori Null. |
writes |
bigint |
Numero di scritture effettuate dalla richiesta. Non ammette valori Null. |
logical_reads |
bigint |
Numero di letture logiche effettuate dalla richiesta. Non ammette valori Null. |
text_size |
int |
Impostazione di TEXTSIZE per la richiesta. Non ammette 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 ammette valori Null. |
quoted_identifier |
bit |
1 = QUOTED_IDENTIFIER è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
arithabort |
bit |
1 = ARITHABORT è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette 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 ammette valori Null. |
ansi_warnings |
bit |
1 = ANSI_WARNINGS è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
ansi_padding |
bit |
1 = ANSI_PADDING è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
ansi_nulls |
bit |
1 = ANSI_NULLS è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
concat_null_yields_null |
bit |
1 = CONCAT_NULL_YIELDS_NULL è impostata su ON per la richiesta. Negli altri casi è 0. Non ammette valori Null. |
transaction_isolation_level |
smallint |
Livello di isolamento con cui è stata creata la transazione per questa richiesta. Non ammette i valori Null. 0 = Non specificato 1 = ReadUncomitted 2 = ReadCommitted 3 = Repeatable 4 = Serializable 5 = Snapshot |
lock_timeout |
int |
Periodo di timeout del blocco, espresso in millisecondi, per la richiesta. Non ammette i 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 ammette 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 ammette valori Null. |
granted_query_memory |
int |
Numero di pagine allocate all'esecuzione di una query nella richiesta. Non ammette 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 ammette valori Null. |
group_id |
int |
ID del gruppo del carico di lavoro a cui appartiene la query. Non ammette 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. |
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 del piano di query per individuare il costo cumulativo di query con piani di esecuzione analoghi. |
statement_sql_handle |
varbinary(64) |
Si applica a: SQL Server 2014 fino a SQL Server 2014. Riservato per un utilizzo futuro. |
statement_context_id |
bigint |
Si applica a: SQL Server 2014 fino a SQL Server 2014. Riservato per un utilizzo futuro. |
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE per il 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
Riferimento
Funzioni e viste a gestione dinamica (Transact-SQL)
Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)
sys.dm_os_memory_clerks (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)