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 |
|
14. April 2006 |
|
05. Dezember 2005 |
|