Udostępnij za pośrednictwem


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;