SQL Server LOGON Trigger Nedir? Nasıl Tanımlanır?

Sunucu seviye DDL Trigger‘lar Logon Trigger‘lar aslında aynı işleve sahiptirler. Genellikler kullanıcıları takip(audit) işlemleri için kullanılırlar. Sunucuya erişmeye çalışan istemcileri kısıtlamak,izin vermek,giriş yapmasını engellemek,giriş işlemlerini loglamak veya belirli tarih,saatlerde giriş yapmasını sağlamak için kullanılırlar.
İstemci Sql Server‘a giriş işlemi yapmak istedikten hemen sonra, bağlantı açılma işleminden hemen önce LOGON olayı tetiklenir. Logon olayı tetiklendikten sonra tanımlanmış bir LOGON Trigger varsa devreye girer.
LOGON Trigger‘ların kullanımına örnek vermek için küçük bir script hazırladım. Kullanmış olduğum script GuestUser adında bir kullanıcı tanımlayıp bu kullanıcıya “Northwind” veritabanına db_owner yetkisi verdim ve sadece haziran ayında giriş yapabilmesini, diğer aylarda giriş yapamamasını sağlamak için bir LOGON Trigger tanımladım. Sizde ihtiyacınıza göre belirli tarih veya belirli saatler için giriş yapabilsin yada yapamasın gibi geliştirebilirsiniz.

[sql]

USE MASTER
GO
–Kullanıcımızı oluşturuyoruz.
CREATE LOGIN GuestUser WITH PASSWORD =’P@sword02014′

USE Northwind
GO
CREATE USER GuestUser FOR LOGIN GuestUser
–Northwind veritabanı için db_owner yetkisi atıyoruz.
ALTER ROLE db_owner ADD MEMBER [Northwind]
GO
–Logon Trigger’imizi kodlamaya başlıyoruz.
CREATE TRIGGER [trgLimitliTarihler]
ON ALL SERVER
FOR LOGON
AS

BEGIN
DECLARE @ErrorTxt varchar(100)
–Sadece hafta sonları, sadece hafta içi gibi varvasyonları da deneyebilirsiniz.
SET @ErrorTxt=’GuestUser kullanıcısı sadece haziran ayında bağlanabilir.’

IF ORIGINAL_LOGIN()=’GuestUser’ AND MONTH(GETDATE())<>6
BEGIN
PRINT @ErrorTxt
ROLLBACK
END
END

[/sql]

Giriş yapılmaya çalışıldığında Haziran ayında değilse alınan hata ekranı

Giriş yapılmaya çalışıldığında Haziran ayında değilse alınan hata ekranı

Sql Server Log'larına baktığımızda fırlatmış olduğumuz hata mesajını görebiliyoruz.

Sql Server Log’larına baktığımızda fırlatmış olduğumuz hata mesajını görebiliyoruz.

 

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.