В SQL Server можете да използвате тригер за влизане, за да одитирате и контролирате сесиите на сървъра, като например проследяване на активността за влизане, ограничаване на влизанията до SQL Server или ограничаване на броя на сесиите за конкретно влизане.
Тази статия предоставя пример за използване на тригер за влизане за ограничаване на броя на едновременните сесии за конкретно влизане.
Пример
Ето пример за тригер за влизане, който ограничава броя на едновременните сесии за конкретно влизане до 1.
Създайте вход:
CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;
Създайте тригера за влизане:
CREATE TRIGGER trg_limit_concurrent_sessions
ON ALL SERVER WITH EXECUTE AS 'Marge'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN() = 'Marge' AND
(SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 AND
original_login_name = 'Marge') > 1
ROLLBACK;
END;
Сега, когато този потребител се опита да влезе при втора връзка, той трябва да получи следната грешка:
Error message: Logon failed for login 'Marge' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english.
Имайте предвид, че всички съобщения, произхождащи от тригера, които обикновено достигат до потребителя, като съобщения за грешки и съобщения от PRINT
оператор, се пренасочват към регистъра за грешки на SQL Server.
Също така тригерите за влизане не се задействат, ако удостоверяването не успее.