I SQL Server kan du bruge en logon-trigger til at revidere og kontrollere serversessioner, såsom at spore loginaktivitet, begrænse login til SQL Server eller begrænse antallet af sessioner for et specifikt login.
Denne artikel giver et eksempel på brug af en logon-trigger til at begrænse antallet af samtidige sessioner for et specifikt login.
Eksempel
Her er et eksempel på en logon-trigger, der begrænser antallet af samtidige sessioner for et specifikt login til 1.
Opret et login:
CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;
Opret logon-triggeren:
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;
Nu, når denne bruger forsøger at logge ind på en anden forbindelse, skulle de få følgende fejl:
Error message: Logon failed for login 'Marge' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english.
Bemærk, at alle meddelelser, der stammer fra triggeren, og som typisk vil nå brugeren, såsom fejlmeddelelser og meddelelser fra PRINT
sætning, viderestilles til SQL Server-fejlloggen.
Desuden udløses logon-triggere ikke, hvis godkendelse mislykkes.