MSSQL’de Uzun Süren Querileri Tespit Etmek

Merhaba
Bu prosedür axaptada özellikle çok uzun süren querileri tespit etmenizi sağlar. Bu sayede kilitlenmeleri tespit edip hangi kullanıcıdan veya queriden kaynaklandığını tespit edebilirsiniz. Umarım işinize yarar.
İndirmek için buraya tılayabilirsiniz.

CREATE PROCEDURE [bmssa].[q_processes] AS
set nocount on
declare
@spid smallint,
@blocked smallint,
@waittype binary,
@waittime INT,
@lastwaittype nchar(32),
@waitresource nchar(50),
@dbid smallint,
@uid smallint,
@cpu int,
@physical_io bigint,
@memusage int,
@last_batch datetime,
@login_time datetime,
@open_tran smallint,
@status nchar(30),
@hostname nchar(50),
@program_name nchar(50),
@cmd nchar(16),
@nt_domain nchar(50),
@nt_username nchar(50)
declare @objectID as int
select @objectID = object_id(‘[tempdb]..[#tmpProcesses]’)
if exists (select * from tempdb..sysobjects where id =  @objectID)
drop table #tmpProcesses
create table #tmpProcesses(
spid smallint,
blocked smallint,
waittype binary,
waittime INT,
lastwaittype nchar(32),
waitresource nchar(50),
dbid smallint,
uid smallint,
cpu int,
physical_io bigint,
memusage int,
last_batch datetime,
login_time datetime,
open_tran smallint,
status nchar(30),
hostname nchar(50),
program_name nchar(50),
cmd nchar(16),
nt_domain nchar(50),
nt_username nchar(50))
DECLARE processes_cursor CURSOR FOR
select spid,blocked,waittype,waittime,lastwaittype,waitresource,dbid,uid,cpu,physical_io,
memusage,last_batch,login_time,open_tran,
status,hostname,program_name,cmd,nt_domain,nt_username
from master..sysprocesses (nolock)
where spid > 50 and (status = ‘runnable’ or open_tran > 0 or waittime > 0 or blocked > 0)
and dbid <> 1 and spid <> @@spid
order by cpu desc
OPEN processes_cursor
FETCH NEXT FROM processes_cursor
INTO @spid,@blocked,@waittype,@waittime,@lastwaittype,@waitresource,@dbid,
@uid,@cpu,@physical_io,@memusage,@last_batch,@login_time,@open_tran,@status,
@hostname,@program_name,@cmd,@nt_domain,@nt_username
WHILE @@FETCH_STATUS = 0
BEGIN
insert into #tmpProcesses (spid,blocked,waittype,waittime,lastwaittype,waitresource,dbid,uid,cpu,
physical_io,memusage,last_batch,login_time,open_tran,status,hostname,program_name,
cmd,nt_domain,nt_username)
values (@spid,@blocked,@waittype,@waittime,@lastwaittype,@waitresource,@dbid,
@uid,@cpu,@physical_io,@memusage,@last_batch,@login_time,@open_tran,@status,
@hostname,@program_name,@cmd,@nt_domain,@nt_username)
DECLARE @Handle binary(20)
SELECT @Handle = sql_handle FROM master..sysprocesses (nolock)  WHERE spid = @spid
SELECT @spid as spid, text FROM ::fn_get_sql(@Handle)
FETCH NEXT FROM processes_cursor
INTO @spid,@blocked,@waittype,@waittime,@lastwaittype,@waitresource,
@dbid,@uid,@cpu,@physical_io,@memusage,@last_batch,@login_time,@open_tran,
@status,@hostname,@program_name,@cmd,@nt_domain,@nt_username
END
CLOSE processes_cursor
DEALLOCATE processes_cursor
select * from #tmpProcesses
select getdate()
set nocount off
GO

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ve yapay zekâ çözümleriyle kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir mimari tasarlarız.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com