Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Belirtilen sql_handle ile tanımlanan SQL partisinin metnini döndürür. Bu tablo değerli fonksiyon, sistem fonksiyonunun fn_get_sql'nin yerini alır.
Sözdizimi
sys.dm_exec_sql_text(sql_handle | plan_handle)
Arguments
sql_handle
Yürütülmüş veya şu anda yürütülmekte olan bir grupu benzersiz şekilde tanımlayan bir tokendır.
sql_handlevarbinar(64).
sql_handle aşağıdaki dinamik yönetim nesnelerinden elde edilebilir:
plan_handle
Bir grup için benzersiz şekilde tanımlanan ve planı plan önbelleğinde bulunan ya da şu anda yürütülmekte olan bir grup için sorgu yürütme planını benzersiz şekilde tanımlayan bir tokendır.
plan_handlevarbinary(64) şeklindedir.
plan_handle aşağıdaki dinamik yönetim nesnelerinden alınabilir:
Döndürülen Tablo
| Sütun adı | Veri türü | Description |
|---|---|---|
| dbid | smallint | Veritabanının kimliği. Saklanan bir prosedürde statik SQL için, saklanan prosedürü içeren veritabanının kimliği. Null değilse. |
| Nesne Kimliği | int | Nesnenin kimliği. Ad hoc ve hazırlanmış SQL ifadeleri için NULL mu? |
| sayı | smallint | Numaralı bir saklanan prosedür için, bu sütun depolanan prosedürün numarasını döndürür. Daha fazla bilgi için sys.numbered_procedures (Transact-SQL)'a bakınız. Ad hoc ve hazırlanmış SQL ifadeleri için NULL mu? |
| şifrelenmiş | bit | 1 = SQL metni şifrelenmiştir. 0 = SQL metni şifrelenmemiştir. |
| text | nvarchar(max) | SQL sorgusunun metni. Şifrelenmiş nesneler için NULL'dur. |
Permissions
VIEW SERVER STATE Sunucuda izin gerektirir.
SQL Server 2022 ve üzeri için izinler
Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.
Açıklamalar
Ad hoc sorgular için, SQL tutamaçları sunucuya gönderilen SQL metnine dayalı hash değerleridir ve herhangi bir veritabanından çıkabilir.
Veritabanı nesneleri, örneğin depolanmış prosedürler, tetikleyiciler veya fonksiyonlar için, SQL tutamaçları veritabanı kimliği, nesne kimliği ve nesne numarasından türetilir.
Plan tutucu, tüm grubun derlenmiş planından türetilen bir hash değeridir.
Uyarı
DBID , ad hoc sorgular için sql_handle üzerinden belirlenemez. Ad hoc sorgular için dbid'i belirlemek için plan_handle kullanın.
Örnekler
A. Kavramsal Örnek
Aşağıda, bir sql_handle doğrudan veya CROSS APPLY ile geçişi gösteren temel bir örnek verilmiştir.
Aktivite yaratın.
SQL Server Management Studio'da yeni bir sorgu penceresinde aşağıdaki T-SQL'i çalıştırın.-- Identify current spid (session_id) SELECT @@SPID; GO -- Create activity WAITFOR DELAY '00:02:00';CROSS APPLY kullanıyorum.
sys.dm_exec_requests'dan gelen sql_handle CROSS APPLYile sys.dm_exec_sql_text'ye iletilir. Yeni bir sorgu penceresi açın ve adımda belirtilen spid'i geçin. Bu örnekte spid59ise .SELECT t.* FROM sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t WHERE session_id = 59 -- modify this value with your actual spidDoğrudan geçiş sql_handle .
sql_handle sys.dm_exec_requests'den alın. Sonra sql_handle doğrudan sys.dm_exec_sql_text'ye ilet. Yeni bir sorgu penceresi açın ve adımda tanımlanan spid'i sys.dm_exec_requests'e geçirin. Bu örnekte spid59ise . Sonra geri dönen sql_handlesys.dm_exec_sql_text argüman olarak sunulur.-- acquire sql_handle SELECT sql_handle FROM sys.dm_exec_requests WHERE session_id = 59 -- modify this value with your actual spid -- pass sql_handle to sys.dm_exec_sql_text SELECT * FROM sys.dm_exec_sql_text(0x01000600B74C2A1300D2582A2100000000000000000000000000000000000000000000000000000000000000) -- modify this value with your actual sql_handle
B. Ortalama CPU süresine göre en çok sorulan beş sorgu hakkında bilgi edinin
Aşağıdaki örnek, SQL ifadesinin metnini ve en üst beş sorgu için ortalama CPU süresini döndürür.
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;
C. Toplu yürütme istatistiklerini sağla
Aşağıdaki örnek, toplu olarak yürütülen SQL sorgularının metnini geri getirir ve bunlar hakkında istatistiksel bilgi 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;
Ayrıca bakınız
Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
Yürütmeyle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (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)
APPLY kullanımı
sys.dm_exec_text_query_plan (Transact-SQL)