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.

ms177648.note(it-it,SQL.90).gifNota:

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

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta di informazioni sul mapping tra SQL Server 2000 e SQL Server 2005.
  • Aggiunta di esempi.
  • Aggiunta della tabella Cardinalità delle relazioni.
Contenuto modificato:
  • Modifica delle descrizioni per start_time, status, sql_handle, plan_handle, database_id, user_id, connection_id, transaction_id, context_info, scheduler_id, task_address, language, date_format, transaction_isolation_level, date_first, executing_managed_code.

5 dicembre 2005

Nuovo contenuto:
  • Aggiunta di una nota relativa al tempo trascorso in modalità preemptive.
Contenuto modificato:
  • Correzione del tipo di dati di wait_type.