No SQL Server, você pode usar um gatilho de logon para auditar e controlar as sessões do servidor, como rastrear a atividade de logon, restringir logons ao SQL Server ou limitar o número de sessões para um logon específico.
Este artigo fornece um exemplo de uso de um gatilho de logon para limitar o número de sessões simultâneas para um logon específico.
Exemplo
Aqui está um exemplo de um gatilho de logon que limita o número de sessões simultâneas para um logon específico a 1.
Crie um login:
CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
GRANT VIEW SERVER STATE TO Marge;
Crie o gatilho de logon:
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;
Agora, quando esse usuário tentar fazer login em uma segunda conexão, ele deverá receber o seguinte erro:
Error message: Logon failed for login 'Marge' due to trigger execution. Changed database context to 'master'. Changed language setting to us_english.
Observe que todas as mensagens originadas dentro do gatilho que normalmente chegariam ao usuário, como mensagens de erro e mensagens do
PRINT
instrução, são desviados para o log de erros do SQL Server. Além disso, os gatilhos de logon não são acionados se a autenticação falhar.