Freigeben über


sys.dm_exec_sql_text

Aktualisiert: 12. Dezember 2006

Gibt den Text des SQL-Batches zurück, der von dem angegebenen sql_handle identifiziert wird. Diese Tabellenwertfunktion ersetzt die Systemfunktion fn_get_sql.

Syntax

sys.dm_exec_sql_text(sql_handle)

Argumente

  • sql_handle
    Dies ist das SQL-Handle für den zu suchenden Batch. sql_handle ist varbinary(64). sql_handle kann von den folgenden dynamischen Verwaltungsobjekten abgerufen werden:

    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_cursors
    • sys.dm_exec_xml_handles
    • sys.dm_exec_query_memory_grants

Zurückgegebene Tabelle

Spaltenname Datentyp Beschreibung

dbid

smallint

ID der Datenbank.

Dieser Wert ist für Ad-hoc-Anweisungen und vorbereitete SQL-Anweisungen NULL.

objectid

int

ID des Objekts.

Dieser Wert ist für Ad-hoc-Anweisungen und vorbereitete SQL-Anweisungen NULL.

number

smallint

Für eine nummerierte gespeicherte Prozedur gibt diese Spalte die Nummer der gespeicherten Prozedur zurück. Weitere Informationen finden Sie unter sys.numbered_procedures (Transact-SQL).

Dieser Wert ist für Ad-hoc-Anweisungen und vorbereitete SQL-Anweisungen NULL.

encrypted

bit

1 = Der SQL-Text ist verschlüsselt.

0 = Der SQL-Text ist nicht verschlüsselt.

text

nvarchar(max)

Text der SQL-Abfrage.

Der Wert ist für verschlüsselte Objekte NULL.

Hinweise

Für Batches sind die SQL-Handle Hashwerte auf der Grundlage des SQL-Textes. Für Datenbankobjekte wie gespeicherte Prozeduren, Trigger oder Funktionen sind die SQL-Handle von der Datenbank-ID, Objekt-ID und Objektnummer abgeleitet.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Abrufen von Informationen zu den fünf Abfragen mit dem höchsten durchschnittlichen CPU-Zeitaufwand

Im folgenden Beispiel wird der Text der SQL-Anweisung und die durchschnittliche CPU-Zeit für die fünf Abfragen mit der höchsten durchschnittlichen CPU-Zeit zurückgegeben.

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. Bereitstellen einer Statistik zur Batchausführung

Im folgenden Beispiel wird der Text von SQL-Abfragen zurückgegeben, die in Batches ausgeführt werden. Außerdem werden statistische Informationen zu den Abfragen bereitgestellt.

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;

Siehe auch

Verweis

Dynamische Verwaltungssichten und -funktionen
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit der Ausführung
sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Die Beschreibung von sql_handle wurde aktualisiert.
  • Es wurde hinzugefügt, dass vorbereitete Anweisungen in den Spalten dbid, objectid und number NULL zurückgeben.

14. April 2006

Geänderter Inhalt:
  • Die Beschreibungen der zurückgegebenen Spalten wurden um NULL-wertige Definitionen erweitert.
  • Die Beispiele wurden korrigiert.

05. Dezember 2005

Geänderter Inhalt:
  • Der Datentyp des Feldes text wurde von text in nvarchar(max) geändert.