sys.dm_exec_sql_text (Transact-SQL)

Возвращает текст пакета SQL, который определен указанным параметром sql_handle. Функция с табличным значением заменяет системную функцию fn_get_sql.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Синтаксис

sys.dm_exec_sql_text(sql_handle | plan_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

    • sys.dm_exec_connections

  • plan_handle
    Идентификатор плана запроса.

    Дополнительные сведения см. в разделе sys.dm_exec_text_query_plan (Transact-SQL).

Возвращаемая таблица

Имя столбца

Тип данных

Описание

dbid

smallint

Идентификатор базы данных.

Для нерегламентированных и подготовленных инструкций 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 для зашифрованных объектов.

Разрешения

Требует разрешения VIEW SERVER STATE на сервере.

Замечания

Для пакетов дескрипторы SQL являются значениями хэша на основе текста SQL. Для таких объектов баз данных, как хранимые процедуры, триггеры или функции, дескрипторы SQL создаются на основе идентификатора базы данных, идентификатора объекта, а также номера объекта. plan_handle — это значение хэша, являющееся производным от скомпилированного плана всего пакета.

Примеры

А.Получение сведений о первых пяти запросах по среднему времени ЦП

Следующий пример возвращает текст инструкции 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;

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления и функции, связанные с выполнением (Transact-SQL)

sys.dm_exec_query_stats (Transact-SQL)

sys.dm_exec_requests (Transact-SQL)

sys.dm_exec_cursors (Transact-SQL)

sys.dm_exec_xml_handles (Transact-SQL)

sys.dm_exec_query_memory_grants (Transact-SQL)