Dans SQL Server, vous pouvez utiliser un déclencheur de connexion pour auditer et contrôler les sessions du serveur, comme suivre l'activité de connexion, restreindre les connexions à SQL Server ou limiter le nombre de sessions pour une connexion spécifique.
Cet article fournit un exemple d'utilisation d'un déclencheur de connexion pour limiter le nombre de sessions simultanées pour une connexion spécifique.
Exemple
Voici un exemple de déclencheur de connexion qui limite à 1 le nombre de sessions simultanées pour une connexion spécifique.
Créez un identifiant :
CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;
Créez le déclencheur de connexion :
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;
Désormais, lorsque cet utilisateur essaie de se connecter sur une deuxième connexion, il doit obtenir l'erreur suivante :
Error message: Logon failed for login 'Marge' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english.
Notez que tous les messages provenant de l'intérieur du déclencheur qui atteindraient généralement l'utilisateur, tels que les messages d'erreur et les messages de PRINT
instruction, sont redirigés vers le journal des erreurs SQL Server.
De plus, les déclencheurs de connexion ne se déclenchent pas si l'authentification échoue.