sql >> Databáze >  >> RDS >> Sqlserver

Omezení simultánních uživatelských relací pro konkrétní přihlášení na SQL Server

Na serveru SQL Server můžete použít spouštěč přihlášení k auditu a řízení relací serveru, jako je sledování aktivity přihlášení, omezení přihlášení k serveru SQL Server nebo omezení počtu relací pro konkrétní přihlášení.

Tento článek poskytuje příklad použití spouštěče přihlášení k omezení počtu současných relací pro konkrétní přihlášení.

Příklad

Zde je příklad spouštěče přihlášení, který omezuje počet současných relací pro konkrétní přihlášení na 1.

Vytvořte přihlašovací jméno:

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

Vytvořte spouštěč přihlášení:

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;

Nyní, když se tento uživatel pokusí přihlásit na druhé připojení, měla by se zobrazit následující chyba:

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

Upozorňujeme, že všechny zprávy pocházející ze spouštěče, které se obvykle dostanou k uživateli, jako jsou chybové zprávy a zprávy z PRINT příkazu, jsou přesměrovány do protokolu chyb serveru SQL Server.

Přihlašovací spouštěče se také nespustí, pokud se ověření nezdaří.


  1. ST_DWithin bere parametr jako stupeň, ne metry, proč?

  2. Jak mohu urychlit dotaz MySQL s velkým posunem v klauzuli LIMIT?

  3. Použití INNER JOIN ke kombinaci tabulek SQL Server a jejich zobrazení ve webových formulářích ASP.NET

  4. Seznam účtů přidružených k profilu pošty databáze na serveru SQL Server