Bu makalede mssql server üzerinde herhangi bir session yapısının kill edilmek istendiğinde başarılı bir şekilde kill edildiği mesajını aldıktan sonra tekrardan ilgili sessionları kontrol ettikten sonra kill edilmeyen session yapısının kill edilmediğini görmekteyiz.
KILL edilmesine rağmen session gitmiyorsa genelde arka planda rollback yapıyordur ya da kill edilemeyen bir durumda takılı kalmıştır.
İlgili session kill edilir.

sp_whoIsactive’den kontrol edildiğinde KILL edilen session’ın KILL edilmediğini görmekteyiz.

Aşağıdaki komut ile bakıldığında ilgili ifadenin kendini KILLED\ROLLBACK yaptığı görülmektedir.
SELECT*FROM SYS.dm_exec_requests where session_id=2460

Aşağıdaki komut yardımı ile ilgili session yapısının ne durumda olduğunu kontrol edebiliriz.
select CMD,status,*from sys.sysprocesses where spid=2460

Aşağıdaki komut ile ilgili session yapısının tahmini ne kadar sürede bitireceğini söylemektedir. Kısacası rollback süresi tahmin edilebilir.
KILL 2460 WITH STATUSONLY

Aşağıdaki komut ile session id üzerinde herhangi bir aktif işlem olup olmadığını görebiliriz. is_user_process
SELECT open_transaction_count,is_user_process,*FROM sys.dm_exec_sessions where session_id=2460

Bu yapıya sebep olan işlem eğer session büyük bir işlem (DELETE, UPDATE, index rebuild vb.) yaptıysa, SQL Server geri alma (rollback) yapar.
Transaction çok büyük olduğu için milyonlarca satırlık işlem, büyük index rebuild işlemleri, uzun süredir açık transaction’lar session yapısının bu duruma düşmesine sebep olabilir. Özellikle BEGIN TRAN ile açılıp commit edilmeyen işler bu duruma yol açar. Sessionlar system işlemleri ise kill edilemez. System işlemleri CHECKPOINT-BACKUP-REPLICATION-AlwaysOn- LOG WRITER ve system sessionları kill edilemez.
Rollback süresi, işlemin kendisinden bile uzun sürebilir. Çünkü rollback işlemi tek bir tread üzerinden gerçekleşmektedir. 
Son olarak Rollback işlemi uzun sürerse ve sql server çalışmayacak durumda ise sql server servisi restart edilmektedir.
Neden backup rollback’te uzun sürer. SQL Server backup işlemini yarıda kesince açılmış I/O işlemlerini kapatır. Backup metadata’sını geri alır. Disk üzerindeki tutarsız parçaları temizler.
SQL Server backup işlemini yarıda kesince:
• Açılmış I/O işlemlerini kapatır
• Backup metadata’sını geri alır
• Disk üzerindeki tutarsız parçaları temizler
Ne kadar sürer?
Rollback süresi şuna bağlı:
• Backup dosyasının boyutu
• Backup sırasında ne kadar ilerlemişti
• Disk hızı (özellikle yazma I/O)
Kill edilen sessionda büyük işlem iptali database recovery’yi çok daha uzun yapar. Bu da saatlerce beklememize sebep olmaktadır.
Başka makalede görüşmek dileğiyle..
Yoksullara ve kimsesizlere destek olmak, büyük ibadetler kadar değerlidir.(Hadis)