SP_WHO2 İLE KULLANICI VE İŞLEM KONTROLÜ | MSSQL

Merhaba, Sql Server’da sp_who2 komutu ile veritabanı sunucusunda o an neler olduğunu görebiliriz hızlı bir şekilde.

Genelde blokeli bir işlem var mı buna odaklanırız. BlkBy alanında görebiliriz bunu. Ancak burada bir id gördüğümüz anda hemen öldürülmesi gereken bir işlem olarak düşünmemek lazım. Anlık olarak burada başka işlemleri kilitleyen sorgular olabilir, tam baktığımız saniyede. Bunlarda problem yok. Ama 10-15 saniye boyunca hep aynı blokeli id değerini görüyorsak durup düşünmek lazım.

Peki bu kilitleyen SPID değerine sahip işin detayını görebilir miyiz? Evet görebiliriz. Onu da dbcc inputbuffer(SPID değeri) komutuyla görüntüleyebiliriz.

Görüntüledikten sonra belki bu işlemi öldürmek/öldürmemek noktasında karar vermek doğru olacaktır.

sp_who2 komutuyla gelen sonuçları filtrelemek mümkün değil. Bununla ilgili internette güzel bir çözüm bulmuş arkadaşın birisi sağolsun.

Aşağıdaki şekilde dönen sonucu bir tablo değişkenine atıp, sonrasında o tabloyu şarta bağlı sorgulama yöntemini tavsiye etmiş. İşe yarar bir yöntem.

DECLARE @Table TABLE(SPID INT, 
Status VARCHAR(MAX), 
LOGIN VARCHAR(MAX), 
HostName VARCHAR(MAX), 
BlkBy VARCHAR(MAX),
DBName VARCHAR(MAX), 
Command VARCHAR(MAX), 
CPUTime INT, 
DiskIO INT,
LastBatch VARCHAR(MAX), 
ProgramName VARCHAR(MAX), 
SPID_1 INT, 
REQUESTID INT)
INSERT INTO @Table EXEC sp_who2
 
SELECT * FROM @Table
WHERE HostName = 'W2016'

Selamlar.