Bu paylaşımda veri tabanlarında işlemini bitirmiş hala bekleyen sleeping sessionların kill ediimesine ilişkin scripti sizlere paylaşacağız.
Aşğıdaki script ile sleeping’te olan sorgular bulunur ve o sessionlar kill edilir. Şartlarımızdan en kritik olanı ise open_transaction_count değerinin 0 olmasına dikkat edilir bu değer. Transaction’ın ahal açık olduğunu bizlere göstermektedir. Transaction’un kapatılması için query’nin dispose(commit) edilmesi şarttır. Eğer commit edilmemiş query’i sonlandırırsanız.DML(Data Manipulation Language) işlemlerde(Delete,update,insert) rollback durumu söz konusu olacaktır. Bu script yoğun transaction olmayan yerlerde kullanılmalıdır sebebi ise bu script yoğun sistemlerde bir session’un arkadasından başka bir session’ı tetikler kendisi sleeping’te olsada arkadasından tetiklediği session runnable durumda olabilir ve siz bu sleeping session’u kill edersniz dml işlemleriniz rollback’e girecektir.
Yoğun sistemlerde Sleeping Session’ları kill eden diğer scriptlere linklerden ulaşabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
use master DECLARE @sessID int DECLARE session_cursor CURSOR FOR SELECT session_id FROM sys.dm_exec_sessions WHERE status = N'sleeping' AND open_transaction_count = 0 AND is_user_process = 1 AND original_login_name NOT IN('YourUsers') --AND database_id = 8; OPEN session_cursor FETCH NEXT FROM session_cursor INTO @sessID WHILE @@FETCH_STATUS = 0 BEGIN EXEC('kill ' + @sessID) FETCH NEXT FROM session_cursor INTO @sessID END CLOSE session_cursor DEALLOCATE session_cursor |
“Sleeping Session Kill Script – I” üzerine 2 yorum