sys.dm_exec_sql_text
Изменения: 12 декабря 2006 г.
Возвращает текст пакета SQL, который определен указанным параметром sql_handle. Возвращающая табличное значение функция заменяет системную функцию fn_get_sql.
Синтаксис
sys.dm_exec_sql_text(sql_handle)
Аргументы
sql_handle
Искомый дескриптор SQL пакета. Аргумент sql_handle имеет тип varbinary(64). Аргумент sql_handle можно получить из следующих объектов DMO:- sys.dm_exec_query_stats;
- sys.dm_exec_requests;
- sys.dm_exec_cursors;
- sys.dm_exec_xml_handles;
- sys.dm_exec_query_memory_grants.
Замечания
Для пакетов дескрипторы SQL являются значениями хэша на основе текста SQL. Для таких объектов баз данных, как хранимые процедуры, триггеры или функции, дескрипторы SQL создаются на основе идентификатора базы данных, идентификатора объекта, а также номера объекта.
Разрешения
Требует разрешения VIEW SERVER STATE на сервере.
Возвращенные таблицы
Имя столбца | Тип данных | Описание |
---|---|---|
dbid |
smallint |
Идентификатор базы данных. Имеет значение NULL для нерегламентированных и подготовленных инструкций SQL. |
objectid |
int |
Идентификатор объекта. Имеет значение NULL для нерегламентированных и подготовленных инструкций SQL. |
number |
smallint |
Для пронумерованной хранимой процедуры этот столбец возвращает ее номер. Дополнительные сведения см. в разделе sys.numbered_procedures (Transact-SQL). Имеет значение NULL для нерегламентированных и подготовленных инструкций SQL. |
encrypted |
bit |
1 = текст SQL зашифрован. 0 = текст SQL не зашифрован. |
text |
nvarchar(max) |
Текст SQL-запроса. Имеет значение NULL для зашифрованных объектов. |
Примеры
А. Получение сведений о первых пяти запросах по среднему времени ЦП
Следующий пример возвращает текст инструкции SQL и среднее время ЦП для пяти первых запросов.
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;
Б. Статистика выполнения пакетов
Следующий пример возвращает текст запросов SQL, выполняемых в пакетах, и статистические сведения о них.
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;
См. также
Справочник
Динамические административные представления и функции
Динамические административные представления и соответствующие функции, связанные с выполнением
sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
12 декабря 2006 г. |
|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|