SQL Server KILL (spid) WITH STATUSONLY Komutu

SQL Server üzerinde çoğu işlemde gerçekleşme oranlarını görürken Kill operasyonunun ne kadarının tamamlandığını görememekteyiz. Bu durumlarda  kill <spid> with statusonly komutu ile yaptığınız kill işlemlerinizin rollback oranlarını görüyorsunuz.

Örneğimiz üzerinden gidecek olursak ,

SET NOCOUNT ON
GO
select 'SPID = ' + cast(@@spid as varchar) -- Session Id yi öğreniyoruz...
GO

CREATE TABLE sqlturkiye_Table99 (sqltr_Column1 INT IDENTITY) -- test tablosunu oluşturuyoruz...
GO

BEGIN TRAN sqlturkiye_tran1 -- Transaction Başladı...

while (1 = 1)
begin
insert sqlturkiye_Table99 default values
if scope_identity() > 77777777 
   break
end
go

dbcc opentran(0)
go

Yukarıda hazırladığım scripti bir sessionda ortalam 1 dk üzeri çalıştırın ve daha sonra farklı bir session açarak aşağıda ki scripti EXEC edin. Bu şekilde 103 no lu session ı Kill ettik ve sp_who2 ile session larımız incelediğimizde 103 no lu session ın ROLLBACK sürecine girdiğini görmekteyiz.

kill 103 
gO
sp_who2
Go

Peki ROLLBACK sürecinin yüzde kaçının bittiğini nerden göreceğiz sorusuna ise bize Kill komutunu with statusonly komutu ile kullanarak rollback oranını gözlemleyebiliriz.

kill 103 with statusonly

Örneğimizde biz komutumuzu kendi session ımıza göre EXEC ettiğimizde {6189a1005e4f6dc613b8beb03d694ce50f0902974162d6a7dea944a970422cc9}43 lük kısmının henüz gerçekleştiğini görmekteyiz.

 

Bu özelliği problemli anlarınız da bir session ı Kill ettiğiniz süreçlerde kullanmanız sizin kontrolünüzü arttıracaktır.

 

Leave a Reply

Your email address will not be published. Required fields are marked *