SQL Server’da güncel çalışan işlemleri listeleme

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

Kişisel Web sayfama hoş geldiniz..