sys.dm_exec_sql_text (języka Transact-SQL)
Zwraca tekst SQL partia jest identyfikowany przez określony sql_handle. Ta funkcja wycenione tabela zastępuje funkcję systemu fn_get_sql.
sys.dm_exec_sql_text(sql_handle | plan_handle)
Argumenty
sql_handle
Is the SQL handle of the batch to be looked up.sql_handle is varbinary(64).sql_handle can be obtained from the following dynamic management objects:sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants
sys.dm_exec_connections
plan_handle
Jest to identyfikator tego planu kwerend.Aby uzyskać więcej informacji zobacz sys.dm_exec_text_query_plan (Transact-SQL).
Zwracana tabela
Nazwa kolumna |
Typ danych |
Description |
---|---|---|
DBID |
smallint |
Identyfikator bazy danych. IS NULL dla ad hoc i przygotowanych instrukcji SQL. |
objectid |
int |
Identyfikator obiektu. IS NULL dla ad hoc i przygotowanych instrukcji SQL. |
numer |
smallint |
Numerowane procedura przechowywana to kolumna zwraca liczbę procedura przechowywana.Aby uzyskać więcej informacji zobacz sys.numbered_procedures (Transact-SQL). IS NULL dla ad hoc i przygotowanych instrukcji SQL. |
szyfrowane |
bit |
1 = SQL tekst jest zaszyfrowany. 0 = SQL tekst nie jest zaszyfrowany. |
tekst |
nvarchar(max) |
Tekst kwerendy SQL. IS NULL dla obiektów zaszyfrowanych. |
Uprawnienia
Wymaga uprawnienia VIEW SERVER STATE na serwerze.
Remarks
Dla instancji uchwyty SQL są wartości mieszania na podstawie tekstu SQL.For database objects such as stored procedures, triggers or functions, the SQL handles are derived from the database ID, object ID, and object number.plan_handle is a hash value derived from the compiled plan of the entire batch.
Przykłady
A.Uzyskiwanie informacji o najwyższym kwerendy pięć przez średni czas PROCESORA
W poniższym przykładzie zwraca tekst SQL instrukcja i średnia czas CPU dla górnego kwerend pięć.
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.Dostarczanie statystyki Wykonywanie partia
W poniższym przykładzie zwraca tekst SQL kwerendy, które są wykonywane w plikach wsadowych i zawiera informacje statystyczne o nich.
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;
See Also