Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Oturum açma tetikleyicileri, bir LOGON olaya yanıt olarak saklı yordamları tetikler. Bu olay, bir SQL Server örneğiyle kullanıcı oturumu kurulduğunda tetiklenir. Oturum açma tetikleyicileri, oturum açma işleminin kimlik doğrulama aşaması tamamlandıktan sonra ancak kullanıcı oturumu oluşturulmadan önce tetiklenir. Bu nedenle, tetikleyici içinde üretilen ve genellikle kullanıcıya ulaşabilecek hata iletileri ve ifadeden gelen PRINT iletileri gibi tüm iletiler SQL Server hata günlüğüne yönlendirilir. Kimlik doğrulaması başarısız olursa oturum açma tetikleyicileri tetiklenmiyor.
Oturum açma etkinliğini izleme, SQL Server'da oturum açma işlemlerini kısıtlama veya belirli bir oturum açma için oturum sayısını sınırlama gibi sunucu oturumlarını denetlemek ve denetlemek için oturum açma tetikleyicilerini kullanabilirsiniz. Örneğin, aşağıdaki kodda oturum açma tetikleyicisi, login_test ile yapılan ve oturum açma tarafından başlatılan üç kullanıcı oturumu varsa SQL Server'a yapılan oturum açma girişimlerini reddeder.
USE master;
GO
CREATE LOGIN login_test
WITH PASSWORD = N'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 N'login_test'
FOR LOGON AS BEGIN
IF ORIGINAL_LOGIN() = N'login_test'
AND (
SELECT COUNT(*)
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
AND original_login_name = N'login_test') > 3
ROLLBACK;
END;
OlayLOGON, AUDIT_LOGIN kullanılabilen SQL İzleme olayına karşılık gelir. Tetikleyiciler ve olay bildirimleri arasındaki birincil fark, tetikleyicilerin olaylarla zaman uyumlu olarak tetiklenmesi, olay bildirimlerinin ise zaman uyumsuz olmasıdır. Bu, örneğin bir oturumun oluşturulmasını durdurmak istiyorsanız bir oturum açma tetikleyicisi kullanmanız gerektiği anlamına gelir. Bir AUDIT_LOGIN etkinliğindeki bildirim bu amaç için kullanılamaz.
İlk ve son tetikleyiciyi belirtin
LOGON olayında birden çok tetikleyici tanımlanabilir. Bu tetikleyicilerden herhangi biri, sp_settriggerorder sistem saklı yordamı kullanılarak bir olayda tetiklenecek ilk veya son tetikleyici olarak atanabilir. SQL Server, kalan tetikleyicilerin yürütme sırasını garanti etmez.
İşlemleri yönetme
SQL Server bir oturum açma tetikleyicisi tetiklemeden önce, SQL Server herhangi bir kullanıcı işleminden bağımsız örtük bir işlem oluşturur. Bu nedenle, ilk oturum açma tetikleyicisi tetiklendiğinde işlem sayısı 1'dir. Tüm oturum açma tetikleyicilerinin yürütülmesi tamamlandıktan sonra işlem yürütülür. Diğer tetikleyici türlerinde olduğu gibi, oturum açma tetikleyicisi yürütmeyi 0 işlem sayısıyla tamamlarsa SQL Server bir hata döndürür. deyimi ROLLBACK TRANSACTION iç içe bir işlem içinde verilmiş olsa bile, deyim işlem sayısını 0 olarak sıfırlar.
COMMIT TRANSACTION işlem sayısını 0'a geri alabilir. Bu nedenle, oturum açma tetikleyicileri içinde deyimlerin verilmesini COMMIT TRANSACTION önermeyiz.
Oturum açma tetikleyicileri içinde bir ROLLBACK TRANSACTION deyim kullanırken aşağıdakileri göz önünde bulundurun:
ROLLBACK TRANSACTIONnoktasına kadar yapılan tüm veri değişiklikleri geri alınır. Bu değişiklikler geçerli tetikleyici tarafından yapılan değişiklikleri ve aynı olayda yürütülen önceki tetikleyicileri içerir. Belirli bir olay için kalan tetikleyiciler yürütülmez.Geçerli tetikleyici,
ROLLBACKdeyiminden sonra görünen herhangi bir kalan deyimi yürütmeye devam eder. Bu deyimlerden herhangi biri verileri değiştirirse, değişiklikler geri alınamaz.
Bir olayda tetikleyicinin yürütülmesi sırasında aşağıdaki koşullardan herhangi biri gerçekleşirse kullanıcı LOGON oturumu oluşturulmaz:
- Özgün örtük işlem geri alınır veya başarısız olur.
- Önem derecesi 20'den büyük olan bir hata tetikleyici gövdesinde oluşturulur.
Oturum açma tetikleyicisini devre dışı bırakma
Oturum açma tetikleyicisi, sysadmin sabit sunucu rolünün üyeleri de dahil olmak üzere tüm kullanıcılar için Veritabanı Altyapısı'na başarılı bağlantıları etkili bir şekilde engelleyebilir. Oturum açma tetikleyicisi bağlantıları engelliyorsa, sysadmin sabit sunucu rolünün üyeleri ayrılmış yönetici bağlantısını kullanarak veya Veritabanı Altyapısı'nı en düşük yapılandırma modunda (-f) başlatarak bağlanabilir. Daha fazla bilgi için bkz. Veritabanı Altyapısı Hizmeti başlangıç seçenekleri.
İlgili içerik
- DDL Tetikleyicileri
- TETİKLEYİCİ OLUŞTUR (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- DROP TRIGGER (Transact-SQL)
- sys.server_triggers (Transact-SQL)
- sys.server_trigger_events (Transact-SQL)