sql >> Database >  >> RDS >> Sqlserver

Gelijktijdige gebruikerssessies beperken voor een specifieke login in SQL Server

In SQL Server kunt u een aanmeldingstrigger gebruiken om serversessies te controleren en te beheren, zoals het bijhouden van aanmeldingsactiviteiten, het beperken van aanmeldingen tot SQL Server of het beperken van het aantal sessies voor een specifieke aanmelding.

Dit artikel geeft een voorbeeld van het gebruik van een aanmeldingstrigger om het aantal gelijktijdige sessies voor een specifieke aanmelding te beperken.

Voorbeeld

Hier is een voorbeeld van een aanmeldingstrigger die het aantal gelijktijdige sessies voor een specifieke aanmelding beperkt tot 1.

Maak een login aan:

CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;

Maak de aanmeldingstrigger:

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;

Wanneer die gebruiker nu probeert in te loggen op een tweede verbinding, zou hij de volgende foutmelding moeten krijgen:

Error message: Logon failed for login 'Marge' due to trigger execution.
Changed database context to 'master'.
Changed language setting to us_english.

Houd er rekening mee dat alle berichten die binnen de trigger komen en die normaal gesproken de gebruiker bereiken, zoals foutmeldingen en berichten van de PRINT statement, worden omgeleid naar het foutenlogboek van SQL Server.

Aanmeldingstriggers worden ook niet geactiveerd als de authenticatie mislukt.


  1. Hoe kan ik query's zien die tegen Oracle worden uitgevoerd?

  2. Dagen aan een datum toevoegen in MySQL

  3. PostgreSQL-index niet gebruikt voor query's op IP-bereiken

  4. Controleer of een tekenreeks een subtekenreeks bevat in SQL Server 2005, met behulp van een opgeslagen procedure