Oturum Açma Tetikleyicileri

Oturum açma Tetikleyiciler ateşlenmesine: saklı yordamlar bir oturum açma olayına yanıt olarak. Bu olay, kullanıcı oturumu ile örneği oluşturulduğunda oluşturulur SQL Server. Oturum açma tetikleyicileri, oturum açmanın kimlik doğrulama aşaması bittikten sonra, ancak kullanıcı oturumu gerçekten kurulmadan önce çalışır. Bu nedenle, genellikle hata iletileri ve PRINT deyimi, gelen iletilerin kullanıcı ulaşacak tetikleyici içinde kaynaklanan tüm iletiler için aktarılır SQL Serverhata \Kütüğü Oturum açma tetikleyicileri kimlik doğrulama başarısız olursa çalışmaz.

Oturum açma tetikleyici sunucu oturumları, Denetim ve kontrol gibi giriş etkinlik, izleme oturumları için sınırlama kullanabilirsiniz SQL Server, ya da belirli bir oturum için oturum sayısını sınırlayarak. Örneğin, aşağıdaki kodda, girişimlerini de günlük logon tetikleyici vermez SQL Serveroturum açma tarafından başlatılan login_testvarsa zaten bu oturum tarafından oluşturulan üç kullanıcı oturumları.

USE master;
GO
CREATE LOGIN login_test WITH PASSWORD = '3KHJ6dhx(0xVYsdf' MUST_CHANGE,
    CHECK_EXPIRATION = ON;
GO
GRANT VIEW SERVER STATE TO login_test;
GO
CREATE TRIGGER connection_limit_trigger
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'login_test' AND
    (SELECT COUNT(*) FROM sys.dm_exec_sessions
            WHERE is_user_process = 1 AND
                original_login_name = 'login_test') > 3
    ROLLBACK;
END;

Oturum açma olay kullanılabilir AUDIT_LOGIN sql izleme olay, karşılık gelen not olay bildirimlerini. Olay bildirimlerini zaman uyumsuz Tetikleyicileri ve olay bildirimleri arasındaki temel fark tetikleyici olaylar ile eşzamanlı olarak yetiştirilir değildir. Bu, örneğin, kurulmasını bir oturumunu durdurmak istiyorsanız, oturum açma tetikleyici kullanmanız gerekir anlamına gelir. AUDIT_LOGIN olay üzerinde olay bildirimi, bu amaçla kullanılamaz.

Ilk ve son tetikleyici belirtme

Birden çok tetikleyici oturum açma olayı olarak tanımlanabilir. Bu Tetikleyicileri herhangi birini kullanarak bir olay ateş ilk veya son tetikleyici belirlenebilir sp_settriggerorder sistem saklı yordamını. SQL Serverkalan Tetikleyiciler yürütme sırasını garanti etmez.

Hareketlerini yönetme

Önce SQL Serverbir oturum açma tetikleyici harekete SQL Serverherhangi bir kullanıcı hareketinden bağımsız bir kesin hareketin yaratır. Bu nedenle, ilk oturum açma tetikleyici zaman ateş başlar, hareket sayısı 1'dir. Tüm oturum açma Tetikleyiciler yürütme tamamladıktan sonra hareketi tamamlar. Tetikleyiciler, diğer türlerinde olduğu gibi SQL Serverlogon tetikleyici yürütme hareket sayısı 0 ile tamamlanırsa, bir hata döndürür. Deyimi iç içe geçmiş hareket içinde verilen bile rollback TRANSACTION deyimi hareket sayısı 0 olarak sıfırlanır. TRANSACTION COMMIT hareket sayısı 0 azaltmak. Bu nedenle, oturum açma tetikleyici içinde COMMIT TRANSACTION deyimlerini verilmesine karşı öneriyoruz.

Bir rollback TRANSACTION deyimi içinde oturum açma Tetikleyiciler kullanırken aşağıdakileri dikkate alın:

  • rollback TRANSACTION noktaya kadar yapılan veri değişiklikleri geri alınır. Geçerli tetikleyiciyi ve aynı olay üzerinde yürütülen önceki Tetikleyiciler tarafından yapılan tarafından yapılan bu değişiklikler içerir. Belirli olay kalan tüm tetikleyiciler yürütülmez.

  • Geçerli tetikleyici rollback deyimi sonra görünen herhangi bir diğer deyimleri yürütmek devam ediyor. Bu ifadelerden birini verileri değiştirirseniz, değişiklikler geri alınır değil.

Oturum açma olay tetikleyici yürütme sırasında aşağıdaki koşullardan herhangi biri meydana gelirse bir kullanıcı oturumu kurulan değil:

  • Özgün kesin hareketin döndürülüyor veya başarısız olur.

  • Tetikleyici gövdesi içinde önem 20 büyük olan bir hata ortaya çıkar.

Oturum Açma Tetikleyicisini Devre Dışı Bırakma

Logon tetikleyici etkili başarılı bağlantıları önlemek Veritabanı Altyapısıtüm kullanıcılar için üyeleri dahil sysadminsunucu rolü. Ne zaman oturum açma tetikleyici bağlantıları, üyelerinin engelliyor sysadminsabit sunucu rolü başlatarak veya adanmış yönetici bağlantısı kullanarak bağlayabilirsiniz Veritabanı Altyapısıen az yapılandırma modunda (-f). Daha fazla bilgi için Use the Dedicated Administrator Connection with SQL Server Management Studiove Veritabanı altyapısı hizmeti başlatma seçenekleri.

ilişkili Görevler

Görev

Konu

Oturum açma Tetikleyicileri oluşturma açıklanmaktadır. Oturum açma Tetikleyiciler herhangi bir veritabanından oluşturulabilir, ancak sunucu düzeyinde kaydedilir ve bulunması ana veritabanı.

CREATE TRIGGER (Transact-SQL)

Oturum açma tetikleyici değiştirmek nasıl açıklar.

alter TETIKLEYICI (Transact-sql)

Oturum açma tetikleyici silmek nasıl açıklar.

drop TETIKLEYICI (Transact-sql)

Oturum açma Tetikleyiciler hakkında bilgi dönmek açıklar.

sys.server_triggers (Transact-sql)

sys.server_trigger_events (Transact-sql)

Oturum açma tetikleyici olay verileri yakalamak açıklar.

Ayrıca bkz.

Kavramlar

ddl Tetikleyicileri