Condividi tramite


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

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Contenuto modificato:
  • Aggiornamento della descrizione di sql_handle.
  • Aggiunta dell'indicazione che le istruzioni preparate restituiscono NULL nelle colonne dbid, objectid e number.

14 aprile 2006

Contenuto modificato:
  • Aggiornamento delle descrizioni per le colonne restituite per includere le definizioni del valore Null.
  • Correzione degli esempi.

5 dicembre 2005

Contenuto modificato:
  • Modifica del tipo di dati del campo text da text a nvarchar(max).