SQL Server’da güncel çalışan işlemleri listeleme
Bu yazıda SQL Serverda güncel çalışan işlemlere nasıl bakabiliriz birkaç yöntem ile göstereceğim.
- sys.dm_exec_requests view’ına select atarak şuan sistemde çalışan sorguları listeleyebilmekteyiz.
SELECT db.name, er.session_id, er.transaction_id, er.start_time, er.status, er.command, er.wait_time FROM sys.dm_exec_requests AS er JOIN sys.sysdatabases AS db ON er.database_id = db.dbid WHERE er.status = 'running'
- Aşağıdaki sorgu ile arkada çalışan işlemlere, hangi db üzerinde çalıştırıldığına ve çalıştırılan işlemin ne olduğu gibi detaylara bakabiliriz.
SELECT db.name db_name, req.start_time, sqltext.TEXT, req.session_id, req.command, req.transaction_id, req.status, req.cpu_time, req.total_elapsed_time, req.wait_time FROM sys.dm_exec_requests req JOIN sys.sysdatabases AS db ON req.database_id = db.dbid CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext order by start_time asc
- Mevcut istekleri CPU kullanımına göre sıralamak için aşağıdaki sorguyu kullanabilirsiniz.
SELECT
req.session_id
, req.start_time
, cpu_time 'cpu_time_ms'
, object_name(st.objectid,st.dbid) 'ObjectName'
, substring
(REPLACE
(REPLACE
(SUBSTRING
(ST.text
, (req.statement_start_offset/2) + 1
, (
(CASE statement_end_offset
WHEN -1
THEN DATALENGTH(ST.text)
ELSE req.statement_end_offset
END
- req.statement_start_offset)/2) + 1)
, CHAR(10), ' '), CHAR(13), ' '), 1, 512) AS statement_text
FROM sys.dm_exec_requests AS req
CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as ST
ORDER BY cpu_time desc;
GO
Daha ayrıntılı kullanımı için buradan inceleyebilirsiniz
Bir cevap yazın