Etiket Sonuçları : Sleeping Session - VERITABANI.ORG

Sleeping Session Kill Script – II

T-SQL 1 yıl önce

Bir önceki yazımızda az yoğun olup sorun yaratabilecek sistemlerde (örn.log shipping) sleeping sesion’ların killl edilmesine ilişkin yazıya (Sleeping Session Kill Script -I) ek olarak, bu yazımızda yoğun transaction olan yerlerde sleeping sessionların killl edilmesine ilişkin yazımızı paylaşacağız. Yoğun transaction olan yerlerde Sleeping session’lar lock oluşturarak kaynak tüketimini artırmakta ve sistemde dar boğaza sebebiyet verebilmektedir. Bu tür yoğun olan sistemlerde running, runnable veya suspend modda bekleyen session_id ‘leri kill etmek he uygulamada hemde veri tabanlarında büyük sorunlara sebebiyet verebilmektedir. bİZ DBA’ların en dikkat ettiği durumlardan biride bir DML işleminin rollback olması durumunda yaşanabilecek senaryolardır. Böyle bir durumla karşlılaşmamak adına Kimberly L. Tripp, Adam Machanic’in yayınlamış olduğu sp_whoisactive çıktısının sonucunda sleeping session’ları kill etmenin iyi bir yöntem olduğunu savunmaktadır. Aşağıda scriptlere ulaşabilirsiniz eğer sorguları bir job içerisine koyup belirli bir zaman dilimine bağlarsanız sürekli olarak sleeping session’ları kill edebilirsiniz. Ancak çok yoğun olarak kullanılan sistemlerde herhangi bir tempdb contentaion’ı yaşadığınızda, sp_whoisactive çıktısı […]

Sleeping Session Kill Script – III

T-SQL 1 yıl önce

Bundan önce yazmış olduğumuz 2 yazıya son olarak sleeping mode’da kalan session’ların dmv’ler ile tespit edilip kill edilmesine ilişkin scripti, bu yazımızda paylaşacağız. Daha önceki yazılara ulaşmak için; Sleeping Session Kill Script – I ve Sleeping Session Kill Script – II Başlangıçta sleeping sessionların neden sleeping mode’da kaldığını bulmak gerekli. En temel sebeplerinden biri uygulama developer’ların transacation’un sonunda close veya dispose etmemesi görülmektedir. Bu fonskiyonların çağrıldığı sorguların içinde de close ihtiyacına gerek olabilir. Veri tabanına query pencerelerinden veya jobların içine yazılan query’lerinde commit edilmesi gerekmektedir. Eğer commit edilmemesi durumunda sorgu açık kalan query ekranında bile sleeping mode’da transactionn log üretir ve ldf dosyanızın büyümesine neden olabilir. Buda başka bir probleme neden olabilmektedir. DECLARE @user_spid INT DECLARE CurSPID CURSOR FAST_FORWARD FOR SELECT es.session_id AS session_id FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS c ON es.session_id = c.session_id CROSS APPLY ( SELECT MAX(DB_NAME(dt.database_id)) AS database_name FROM sys.dm_tran_session_transactions AS st INNER JOIN […]