SQL Anlık Sorguları Görmek

 

DBA olarak anlık sorguları görmek isteriz . Aşağıda ki sorgu da sorgunun ne kadar sürdüğünü, locklanıyorsa hangi session_id ile locklandığını ,sorgunun bekleme tipini ve  hangi makineden geldiği gibi bilgileri bu sorgu yardımı ile görebiliriz.

 

select r.total_elapsed_time / 1000.0 as total_elapsed_s,percent_complete,r.blocking_session_id,
r.last_wait_type,
s.login_name,'MySessionID= ' + cast(r.session_id as varchar) as MySessionID,DB_NAME(r.database_id) as DatabaseName,command
,SUBSTRING(t.text, (r.statement_start_offset/2) + 1,
((CASE statement_end_offset 
WHEN -1 THEN DATALENGTH(t.text)
ELSE r.statement_end_offset END 
- r.statement_start_offset)/2) + 1) AS statement_text
,r.status,wait_time
,wait_type,wait_resource,text,start_time,s.program_name
,r.last_wait_type,s.host_name,r.granted_query_memory * 8 / 1024 as memory_mb
from sys.dm_exec_requests r
inner join sys.dm_exec_sessions s on r.session_id = s.session_id
cross apply sys.dm_exec_sql_text(r.sql_handle) t
where r.session_id <> @@SPID 
--and r.database_id =DB_ID('Hangi DB'ye gelen sorguları listelemek istiyorsanız')
--and t.text like '%text bazlı sorgulama yapmak için text içeriği%' 
--and r.session_id = sessionid
--and s.Login_Name like '%Login bazlı filtreleme%' 
--and s.program_name LIKE '%Program bazlı filtreleme örneğin Management%'
--and r.wait_type !='bekleme tipine göre filtreleme'
--and r.blocking_session_id<>0"

order by start_time asc