sql >> Base de Datos >  >> RDS >> Sqlserver

Limitación de sesiones de usuario simultáneas para un inicio de sesión específico en SQL Server

En SQL Server, puede usar un activador de inicio de sesión para auditar y controlar las sesiones del servidor, como realizar un seguimiento de la actividad de inicio de sesión, restringir los inicios de sesión a SQL Server o limitar la cantidad de sesiones para un inicio de sesión específico.

Este artículo proporciona un ejemplo del uso de un activador de inicio de sesión para limitar la cantidad de sesiones simultáneas para un inicio de sesión específico.

Ejemplo

Este es un ejemplo de un activador de inicio de sesión que limita el número de sesiones simultáneas para un inicio de sesión específico a 1.

Crear un inicio de sesión:

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

Cree el activador de inicio de sesión:

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;

Ahora, cuando ese usuario intente iniciar sesión en una segunda conexión, debería recibir el siguiente error:

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

Tenga en cuenta que todos los mensajes que se originan dentro del activador que normalmente llegarían al usuario, como los mensajes de error y los mensajes de PRINT instrucción, se desvían al registro de errores de SQL Server.

Además, los activadores de inicio de sesión no se activan si falla la autenticación.