sql >> Database teknologi >  >> RDS >> Sqlserver

Begrænsning af samtidige brugersessioner for et specifikt login i SQL Server

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.


  1. Hvordan opdaterer man valgte rækker med værdier fra en CSV-fil i Postgres?

  2. Kørsel af et datavarehus på PostgreSQL

  3. Hvordan CONCAT()-funktionen fungerer i PostgreSQL

  4. MS SQL Server krydstabel begrænsning