Udostępnij za pośrednictwem


sys.dm_exec_sql_text (języka Transact-SQL)

Zwraca tekst SQL partia jest identyfikowana przez określony sql_handle.W tej tabela-ważnych funkcja zastępuje system funkcja fn_get_sql.

Składnia

sys.dm_exec_sql_text(sql_handle | plan_handle)

Argumenty

  • sql_handle
    To dojście SQL wyszukiwane partia .sql_handleis varbinary(64).sql_handlemożna uzyskać z następujących obiektów dynamicznego zarządzania:

    • 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 planu kwerend.

    Aby uzyskać więcej informacji, zobacz sys.dm_exec_text_query_plan (języka Transact-SQL).

Zwracana tabela

Nazwa kolumny

Typ danych

Opis

Identyfikator DBID

smallint

Identyfikator bazy danych.

Jest NULL dla ad hoc i przygotowanych instrukcji SQL .

Identyfikator obiektu

int

Identyfikator obiektu.

Jest NULL dla ad hoc i przygotowanych instrukcji SQL .

liczba

smallint

Dla numerowanych procedura składowanaw tej kolumna zwraca numer procedura składowana.Aby uzyskać więcej informacji, zobacz sys.numbered_procedures (języka Transact-SQL).

Jest 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 .

Jest NULL dla obiektów zaszyfrowanych.

Uprawnienia

Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.

Uwagi

W przypadku partii uchwyty SQL są wartości mieszania w oparciu o tekst SQL .Dla obiektów bazy danych, takich jak procedur przechowywanych, wyzwalaczy lub funkcje uchwyty SQL są uzyskiwane z identyfikator bazy danych, identyfikator obiektu oraz numer obiektu.plan_handle jest wartość mieszania pochodną skompilowany plan całej partia.

Przykłady

A.Uzyskiwanie informacji dotyczących górny kwerend pięciu Procesora średni czas

Poniższy przykład zwraca tekstinstrukcja SQLi średnia Procesora czas górny pięciu kwerend.

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 partia— wykonanie statystyki

W poniższym przykładzie zwraca tekst kwerendy SQL , wykonanych w plikach wsadowych i dostarcza 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;