30 Mayıs 2007

Son Çalışan Sorguların Listesi

Daha önce Profiler aracını kullanarak izleyebildiğimiz çalışan sorgu listesine Sql Server 2005'le birlikte sys.dm_exec_query_stats isimli view sayesinde ulaşabiliriz. Bu özelliğin bazı projelerde işleri kolaylaştıracağını düşünüyorum. İhtiyaç halinde kullanmak üzere view i kullanan basit bir sp yazalım.
Sorgunun metnini, son çalışma zamanını,sorgu çalıştırma planını ve sorgunun çalışma sayısı bilgilerini döndürsün.

CREATE PROCEDURE [dbo].[sp_qryStats]

as
SELECT

SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END
- qs.statement_start_offset)/2) + 1) as statement_text,
convert(varchar,last_execution_time) as last_execution_time,
qp.query_plan,
execution_count
FROM sys.dm_exec_query_stats as qs
--sql_handle değeri text hale getirilir
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
--plan_handle değeri xml tipte veri döndürecek hale getirilir
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) as qp
--Aslında bu çalıştıracağımız sorgu da listelenen sorgular arasında olduğu için bir where koşulu ekledik
Where st.text not like '%sys.dm_exec_query_stats%'
ORDER BY last_execution_time DESC

exec [dbo].[sp_qryStats]
Prosedür sonucunda alacağımız çıktı aşağıdaki şekilde olacaktır.


0 yorum: