MSDN Library

sys.dm_exec_sql_text (Transact-SQL)

 

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии), База данных SQL 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).

Имя столбцаТип данныхОписание
dbidsmallintИдентификатор базы данных.

Для нерегламентированных и подготовленных инструкций SQL это идентификатор базы данных, в которой происходила компиляция инструкции.
objectidintИдентификатор объекта.

Имеет значение NULL для нерегламентированных и подготовленных инструкций SQL.
numbersmallintДля пронумерованной хранимой процедуры этот столбец возвращает ее номер. Дополнительные сведения см. в разделе sys.numbered_procedures (Transact-SQL).

Имеет значение NULL для нерегламентированных и подготовленных инструкций SQL.
encryptedbit1 = текст SQL зашифрован.

0 = текст SQL не зашифрован.
textnvarchar(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)

Добавления сообщества

Показ:
© 2016 Microsoft