Alper ÇELİK

Bilgisayar Mühendisi

Trigger_7

Logon trigger'lar adı üzerinde oturum açma işlemleri üzerinden dönen olayları kapsar. Bu tip trigger'lar oturum açma(logon) kimlik doğrulaması(authentication) fazı bittikten hemen sonra tetiklenmeye başlarlar.
Logon trigger'ların kullanılma amaçları şunlar olabilir:
 
* Login aktivitelerini izlemek,  
* SQL Server'a login olan kullanıcıları kısıtlamak,  
* Login olan kullanıcıların açmış olduğu session(sorgu sayfası) adetini kısıtlamak.   
 
Konunun pekişmesi için örnek bir uygulama yapalım:
 
Kullanıcının session sayısını 3 ile sınırlayan bir trigger yazacağız ancak bunun için öncelikle sql'de tanımlı sistem tarafından tanımlanmış bir view'ı bilmemizde fayda var. sys.dm_exec_sessions sistem view'i size açık olan session'ları ve numaralarını, kullanıcı adıyla veren detaylı bir view'dir. Bu view'de bizim kullanacağımız kolonlar, is_user_process ve original_login_name kolonları olacak.   
 
CREATE TRIGGER trg_AuditLogin
ON ALL SERVER
FOR LOGON
AS
BEGIN
Declare @LoginName nvarchar(100)
set @LoginName=ORIGINAL_LOGIN()
IF(select COUNT(*) from sys.dm_exec_sessions   
WHERE is_user_process=1 and original_login_name=@LoginName)>3  
BEGIN  
Print 'Dördüncü bağlantı ' + @LoginName + ' tarafından engellendi.'   
ROLLBACK
END
END
 
 
Bu trigger'ı çalıştırdıktan(execute) sonra server düzeyinde session kontrolü başlamış olacaktır ve 4. session'ı açtığınızda sizi uyaracaktır. Ancak kod gövdesinde tanımlamış olduğumuz hata mesajının çıkmadığına dikkat etmişsinizdir. Peki o halde 'bu hata mesajım nerededir?' sorusunun cevabı sp_readerrorlog SP'sinde saklıdır. Bu prosedürü çalıştırdığınızda(execute), loglanma tarihi ve text mesajını içersinde barındıran bir sonuç kümesiyle karşılaşacaksınız. Bu trigger içersindeki hata mesajımızı da burada görüyor olacaksınız.  
 
 Önemli Not: Sql Server'da açılan sorgu pencerelerinin(query) dışında sol tarafta(genelde) bulunan object explorer sekmesi için de bir session id ataması yapılır.
 
Umarım bu makalemden faydalanmışsınızdır. Takip eden makalelerimde görüşmek üzere. Hepinize iyi çalışmalar dilerim.
 
 
 
 

Trigger Serisinin İlk Bölümüne Buradan Ulaşabilirsin

Trigger'lar özelleşmiş bir tür stored prosedürlerdir(SP).