sys.dm_exec_sql_text
Data aggiornamento: 12 dicembre 2006
Restituisce il testo del batch SQL identificato dall'argomento sql_handle specificato. Questa funzione valutata a livello di tabella sostituisce la funzione di sistema fn_get_sql.
Sintassi
sys.dm_exec_sql_text(sql_handle)
Argomenti
sql_handle
Handle SQL del batch da cercare. sql_handle è di tipo varbinary(64). È possibile ottenere sql_handle dagli oggetti a gestione dinamica seguenti:- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_cursors
- sys.dm_exec_xml_handles
- sys.dm_exec_query_memory_grants
Tabella restituita
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
dbid |
smallint |
ID del database. Per istruzioni SQL ad hoc e preparate viene restituito NULL. |
objectid |
int |
ID dell'oggetto. Per istruzioni SQL ad hoc e preparate viene restituito NULL. |
number |
smallint |
Per una stored procedure numerata, questa colonna restituisce il numero della stored procedure. Per ulteriori informazioni, vedere sys.numbered_procedures (Transact-SQL). Per istruzioni SQL ad hoc e preparate viene restituito NULL. |
encrypted |
bit |
1 = Il testo SQL è crittografato. 0 = Il testo SQL non è crittografato. |
text |
nvarchar(max) |
Testo della query SQL. Per gli oggetti crittografati viene restituito NULL. |
Osservazioni
Per i batch gli handle SQL sono valori basati sul testo SQL. Per gli oggetti di database quali, ad esempio, stored procedure, trigger o funzioni, gli handle SQL vengono derivati dall'ID del database, dall'ID dell'oggetto e da numero di oggetto.
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel server.
Esempi
A. Recupero di informazioni sulle prime cinque query in base al tempo medio di CPU
Nell'esempio seguente vengono restituiti il testo dell'istruzione SQL e il tempo medio di CPU per le prime cinque query.
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
B. Restituzione di statistiche di esecuzione dei batch
Nell'esempio seguente viene restituito il testo delle query SQL eseguite in batch e vengono visualizzate le relative informazioni statistiche.
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
Vedere anche
Riferimento
Funzioni e viste a gestione dinamica
Funzioni e viste a gestione dinamica relative all'esecuzione
sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|
14 aprile 2006 |
|
5 dicembre 2005 |
|