sys.dm_exec_sql_text (Transact-SQL)

SQL metni diğer bir deyişle, toplu iş iş döndürür belirtilen tarafından tanımlanan sql_handle. Bu tablo değerli işlev sistem işlev yerine geçer. fn_get_sql.

sys.dm_exec_sql_text(sql_handle | plan_handle)

Bağımsız değişkenler

  • 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
    Sorgu planı için bir tanımlayıcı belirtilir.

    Daha fazla bilgi için bkz: sys.dm_exec_text_query_plan (Transact-SQL).

Dönen Tablo

sütun Name

Veri türü

Açıklama

DBID

smallint

Veritabanı KIMLIĞI.

Iş ad hoc ve hazırlanmış SQL deyimleri için NULL.

ObjectId

int

Nesne KIMLIĞI.

Iş ad hoc ve hazırlanmış SQL deyimleri için NULL.

number

smallint

Bu sütun için numaralandırılmış bir saklı yordam, saklı yordam verir.Daha fazla bilgi için bkz: sys.numbered_procedures (Transact-SQL).

Iş ad hoc ve hazırlanmış SQL deyimleri için NULL.

Şifreli dosya

bit

1 SQL = metin şifrelenir.

0 SQL = metin şifrelenmez.

text

nvarchar(max)

SQL sorgusunun metin.

Iş şifreli nesneler için NULL.

İzinler

Sunucudaki SUNUCU DURUM VIEW iznine gerek duyar.

Remarks

Toplu işlemi için SQL tanıtıcıları SQL metne göre karma değerlerdir.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.

Örnekler

C.Ortalama CPU tarafından ilk beş sorgular hakkında bilgi edinme saat

Aşağıdaki örnek, metin beş üst sorguları için SQL deyim ve ortalama CPU süresini verir.

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.Toplu iş yürütme istatistiklerini sağlama

Aşağıdaki örnekte, toplu olarak yürütülen SQL sorgularının metni verir ve bunlarla ilgili istatistik bilgiler sağlar.

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;