sys.dm_exec_requests
Data aggiornamento: 12 dicembre 2006
Restituisce una riga per ogni richiesta in esecuzione in SQL Server. Le viste a gestione dinamica con ambito server sys.dm_exec_connections, sys.dm_exec_sessions e sys.dm_exec_requests corrispondono alla vista di sistema sys.sysprocesses (precedentemente una tabella di sistema).
[!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 vista a gestione dinamica 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 supporta valori Null.
request_id
int
ID della richiesta. Valore univoco nel contesto della sessione. Non supporta valori Null.
start_time
datetime
Ora pianificata per l'esecuzione della richiesta. Non supporta valori Null.
status
nvarchar(60)
Stato della richiesta. Sono disponibili i valori seguenti:
- Background. La richiesta è un thread in background, come un thread del monitor risorse o di monitoraggio dei deadlock.
- Running. La richiesta è in esecuzione.
- Runnable. La richiesta è eseguibile ma temporaneamente esclusa dalla pianificazione in attesa di un quantum.
- Sleeping. Nessuna operazione da eseguire.
- Pending. La richiesta è in attesa di essere prelevata da un thread di lavoro.
- Suspended. La richiesta è in attesa di un evento.
Non supporta valori Null.
command
nvarchar(32)
Identifica il tipo di comando in corso di elaborazione. I tipi di comandi più comuni sono i seguenti:
- SELECT
- INSERT
- UPDATE
- DELETE
- BACKUP LOG
- BACKUP DB
- DBCC
- WAITFOR
Per recuperare il testo della richiesta, utilizzare la funzione a gestione dinamica sys.dm_exec_sql_text con il valore sql_handle corrispondente per la richiesta. I processi interni di sistema impostano il comando in base al tipo di attività eseguita. Le attività sono le seguenti:
- LOCK MONITOR
- CHECKPOINTLAZY
- WRITER
Non supporta valori Null.
sql_handle
varbinary(64)
Handle dell'istruzione SQL della richiesta. È possibile utilizzare questo handle per recuperare il testo effettivo dell'istruzione con la funzione a gestione dinamica sys.dm_exec_sql_text. Non supporta valori Null.
statement_start_offset
int
Posizione di carattere iniziale dell'istruzione in esecuzione nel batch o nella stored procedure in esecuzione. È possibile utilizzare questo valore in combinazione con la colonna statement_end_offset, la funzione a gestione dinamica sys.dm_exec_sql_text e il valore sql_handle per recuperare l'istruzione in esecuzione per la richiesta. Supporta valori Null.
statement_end_offset
int
Posizione di carattere finale dell'istruzione in esecuzione nel batch o nella stored procedure in esecuzione. È possibile utilizzare questo valore in combinazione con la colonna statement_start_offset, la funzione a gestione dinamica sys.dm_exec_sql_text e il valore sql_handle per recuperare l'istruzione in esecuzione per la richiesta. Supporta valori Null.
plan_handle
varbinary(64)
Handle del piano di query della richiesta. Per visualizzare il piano di query, utilizzare l'handle con la funzione a gestione dinamica sys.dm_exec_query_plan. Per eseguire una query nella cache dei piani, utilizzare l'handle con la vista a gestione dinamica sys.dm_exec_cached_plans. Per visualizzare gli attributi del piano, utilizzare l'handle con la funzione sys.dm_exec_plan_attributes. Supporta valori Null.
database_id
smallint
ID del database nel quale è in esecuzione la richiesta. Per ulteriori informazioni sul database, eseguire una query sulla vista del catalogo sys.databases. Per ottenere il nome del database, utilizzare la funzione intrinseca db_name(). Non supporta valori Null.
user_id
int
ID utente con il quale è in esecuzione la richiesta. Per ulteriori informazioni sugli utenti, eseguire una query sulla vista del catalogo sys.database_principals. Non supporta valori Null.
connection_id
uniqueidentifier
ID della connessione nella quale è arrivata la richiesta. Per ulteriori informazioni sulla connessione fisica o logica, eseguire una query sulla vista a gestione dinamica sys.dm_exec_connections. Supporta valori Null.
blocking_session_id
smallint
ID della sessione che sta bloccando la richiesta. Se questa colonna è 0, la richiesta non è bloccata oppure non sono disponibili o identificabili informazioni sulla sessione che sta bloccando la richiesta.
-2 = La risorsa di blocco appartiene a una transazione distribuita orfana.
-3 = La risorsa di blocco appartiene a una transazione di recupero posticipata.
-4 = Non è possibile determinare l'ID di sessione del proprietario del latch di blocco a causa di transizioni nello stato del latch interno.
wait_type
nvarchar(60)
Se la richiesta è bloccata, questa colonna restituisce il tipo di attesa. Supporta valori Null.
wait_time
int
Se la richiesta è bloccata, questa colonna restituisce la durata dell'attesa corrente espressa in millisecondi. Non supporta valori Null.
last_wait_type
nvarchar(64)
Se la richiesta è stata precedentemente bloccata, questa colonna restituisce il tipo dell'ultima attesa. Non supporta valori Null.
wait_resource
nvarchar(512)
Se la richiesta è bloccata, questa colonna restituisce la risorsa della quale la richiesta è in attesa. Non supporta valori Null.
open_transaction_count
int
Numero di transazioni aperte per la richiesta. Non supporta valori Null.
open_resultset_count
int
Numero di set di risultati aperti per la richiesta. Non supporta valori Null.
transaction_id
bigint
ID della transazione nella quale viene eseguita la richiesta. Questo ID è univoco per un'istanza di SQL Server. Utilizzare questo ID per eseguire query sulle viste a gestione dinamica sys.dm_tran_active_transactions, sys.dm_tran_locks o sys.dm_tran_database_transactions . Non supporta valori Null.
context_info
varbinary(128)
Valore derivato dall'istruzione SET CONTEXT_INFO per la richiesta. Supporta valori Null.
percent_complete
real
Percentuale di lavoro completato per determinate operazioni, incluse le operazioni di rollback.
Nota:
Non vengono restituiti dati relativi allo stato delle query.
Non supporta valori Null.
estimated_completion_time
bigint
Solo per uso interno. Non supporta valori Null.
cpu_time
int
Tempo della CPU utilizzato dalla richiesta, espresso in millisecondi. Non supporta valori Null.
total_elapsed_time
int
Tempo totale, in millisecondi, trascorso dall'arrivo della richiesta. Non supporta valori Null.
scheduler_id
int
ID dell'utilità di pianificazione che sta pianificando la richiesta. Per ulteriori informazioni sull'utilità di pianificazione, eseguire una query sulla vista a gestione dinamica sys.dm_os_schedulers. Non supporta valori Null.
task_address
varbinary(8)
Indirizzo di memoria allocato all'attività associata alla richiesta. Per ulteriori informazioni su questa attività, eseguire una query sulla vista a gestione dinamica sys.dm_os_tasks. Supporta valori Null.
reads
bigint
Numero di letture eseguite dalla richiesta. Non supporta valori Null.
writes
bigint
Numero di scritture eseguite dalla richiesta. Non supporta valori Null.
logical_reads
bigint
Numero di letture logiche eseguite dalla richiesta. Non supporta valori Null.
text_size
int
Impostazione di TEXTSIZE per la richiesta. Non supporta valori Null.
language
nvarchar(256)
Impostazione di LANGUAGE per la richiesta. Supporta valori Null.
date_format
nvarchar(3)
Impostazione di DATEFORMAT per la richiesta. Supporta valori Null.
date_first
smallint
Impostazione di DATEFIRST per la richiesta. Non supporta valori Null.
quoted_identifier
bit
1 = QUOTED_IDENTIFIER è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
arithabort
bit
1 = ARITHABORT è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
ansi_null_dflt_on
bit
1 = ANSI_NULL_DFLT_ON è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
ansi_defaults
bit
1 = ANSI_DEFAULTS è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
ansi_warnings
bit
1 = ANSI_WARNINGS è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
ansi_padding
bit
1 = ANSI_PADDING è impostata su ON per la richiesta.
Negli altri casi è 0.
Non supporta valori Null.
ansi_nulls
bit
1 = ANSI_NULLS è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
concat_null_yields_null
bit
1 = CONCAT_NULL_YIELDS_NULL è impostata su ON per la richiesta. Negli altri casi è 0.
Non supporta valori Null.
transaction_isolation_level
smallint
Livello di isolamento delle transazioni della richiesta. Sono disponibili i valori seguenti:
0 = Non specificato
1 = ReadUncomitted
2 = ReadCommitted
3 = Repeatable
4 = Serializable
5 = Snapshot
Non supporta valori Null.
lock_timeout
int
Periodo di timeout del blocco, espresso in millisecondi, per la richiesta. Non supporta valori Null.
deadlock_priority
int
Impostazione di DEADLOCK_PRIORITY per la richiesta. Non supporta valori Null.
row_count
bigint
Numero di righe restituite al client dalla richiesta. Non supporta valori Null.
prev_error
int
Ultimo errore che si è verificato durante l'esecuzione della richiesta. Non supporta valori Null.
nest_level
int
Livello di nidificazione del codice eseguito nella richiesta. Non supporta valori Null.
granted_query_memory
int
Numero di pagine allocate all'esecuzione di una query nella richiesta. Non supporta valori Null.
executing_managed_code
bit
Indica se la richiesta sta eseguendo oggetti CLR (Common Language Runtime), come routine, tipi e trigger. Il valore rimane impostato per l'intero periodo di permanenza di un oggetto CLR nello stack, anche se esegue istruzioni Transact-SQL da CLR. Non supporta valori Null.
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 in cui si esegue sys.dm_exec_requests.
Cardinalità delle relazioni
Da | A | In/Si applica a | Relazione |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
Uno a zero o molti |
sys.dm_exec_requests |
sys.dm_exec_sql_text(sql_handle) |
CROSS APPLY OUTER APPLY |
Zero o uno a zero o uno |
sys.dm_exec_requests |
sys.dm_exec_query_plan(plan_handle) |
CROSS APPLY OUTER APPLY |
Zero o uno a zero o uno |
sys.dm_exec_requests |
sys.dm_exec_cached_plans |
plan_handle |
Zero o uno a zero o uno |
sys.dm_exec_requests |
sys.dm_exec_plan_attributes(plan_handle) |
CROSS APPLY OUTER APPLY |
Zero o uno a zero o uno |
sys.dm_exec_requests |
sys.databases |
database_id |
Uno-a-uno |
sys.dm_exec_requests |
sys.database_principals |
user_id = principal_id |
Uno-a-uno |
sys.dm_exec_connections |
sys.dm_exec_requests |
connection_id |
Uno a zero o uno |
sys.dm_exec_requests |
sys.dm_tran_active_transactions |
transaction_id |
Uno-a-uno |
Esempi
A. Individuazione del testo di query per un batch in esecuzione
Nell'esempio seguente viene eseguita una query sulla vista sys.dm_exec_requests
per trovare la query di interesse e copiare il relativo sql_handle
dall'output.
SELECT * FROM sys.dm_exec_requests;
GO
Per ottenere il testo dell'istruzione, il valore sql_handle
copiato viene poi utilizzato con la funzione di sistema sys.dm_exec_sql_text(sql_handle)
.
SELECT *
FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Individuazione di tutti i blocchi mantenuti attivi da un batch in esecuzione
Nell'esempio seguente viene eseguita una query sulla vista sys.dm_exec_requests
per trovare il batch di interesse e copiare il relativo transaction_id
dall'output.
SELECT *
FROM sys.dm_exec_requests
GO
Per ottenere informazioni sui blocchi, il valore transaction_id
copiato viene poi utilizzato 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. Individuazione di tutte le richieste bloccate
Nell'esempio seguente viene eseguita una query sulla vista sys.dm_exec_requests
per trovare informazioni sulle 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
Mapping delle tabelle di sistema di SQL Server 2000 alle viste di sistema di SQL Server 2005
Funzioni e viste a gestione dinamica
Funzioni e viste a gestione dinamica relative all'esecuzione
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|
5 dicembre 2005 |
|