Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Ograniczanie jednoczesnych sesji użytkowników dla określonego logowania w SQL Server

W SQL Server możesz użyć wyzwalacza logowania do audytu i kontroli sesji serwera, takich jak śledzenie aktywności logowania, ograniczenie logowania do SQL Server lub ograniczenie liczby sesji dla określonego logowania.

Ten artykuł zawiera przykład użycia wyzwalacza logowania do ograniczenia liczby jednoczesnych sesji dla określonego logowania.

Przykład

Oto przykład wyzwalacza logowania, który ogranicza liczbę jednoczesnych sesji dla określonego logowania do 1.

Utwórz login:

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

Utwórz wyzwalacz logowania:

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;

Teraz, gdy ten użytkownik próbuje zalogować się za pomocą drugiego połączenia, powinien otrzymać następujący błąd:

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

Zwróć uwagę, że wszystkie wiadomości pochodzące z wyzwalacza, które zwykle docierają do użytkownika, takie jak komunikaty o błędach i komunikaty z PRINT instrukcji, są przekierowywane do dziennika błędów SQL Server.

Ponadto wyzwalacze logowania nie uruchamiają się, jeśli uwierzytelnianie się nie powiedzie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj informacje o widoku za pomocą widoku schematu informacji WIDOKÓW w SQL Server

  2. Napraw „nazwa profilu jest nieprawidłowa” podczas wysyłania poczty z serwera SQL

  3. SQL Server:Jak używać UNION z dwoma zapytaniami, które OBA mają klauzulę WHERE?

  4. Konwertuj wartość tekstową w SQL Server z UTF8 na ISO 8859-1

  5. Jak mogę zobaczyć wszystkie znaki specjalne dozwolone w polu varchar lub char w programie SQL Server?