I SQL Server kan du använda en inloggningsutlösare för att granska och kontrollera serversessioner, till exempel spåra inloggningsaktivitet, begränsa inloggningar till SQL Server eller begränsa antalet sessioner för en specifik inloggning.
Den här artikeln ger ett exempel på hur man använder en inloggningsutlösare för att begränsa antalet samtidiga sessioner för en specifik inloggning.
Exempel
Här är ett exempel på en inloggningsutlösare som begränsar antalet samtidiga sessioner för en specifik inloggning till 1.
Skapa en inloggning:
CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;
Skapa inloggningsutlösaren:
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 den användaren försöker logga in på en andra anslutning, bör de få följande felmeddelande:
Error message: Logon failed for login 'Marge' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english.
Observera att alla meddelanden som kommer från utlösaren och som vanligtvis når användaren, till exempel felmeddelanden och meddelanden från PRINT
sats, vidarebefordras till SQL Server-felloggen.
Dessutom aktiveras inte inloggningsutlösare om autentiseringen misslyckas.