Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Giới hạn phiên người dùng đồng thời cho một đăng nhập cụ thể trong SQL Server

Trong SQL Server, bạn có thể sử dụng trình kích hoạt đăng nhập để kiểm tra và kiểm soát các phiên máy chủ, chẳng hạn như theo dõi hoạt động đăng nhập, hạn chế đăng nhập vào SQL Server hoặc giới hạn số phiên cho một đăng nhập cụ thể.

Bài viết này cung cấp một ví dụ về việc sử dụng trình kích hoạt đăng nhập để giới hạn số lượng phiên đồng thời cho một lần đăng nhập cụ thể.

Ví dụ

Dưới đây là một ví dụ về trình kích hoạt đăng nhập giới hạn số lượng phiên đồng thời cho một lần đăng nhập cụ thể là 1.

Tạo thông tin đăng nhập:

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

Tạo trình kích hoạt đăng nhập:

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;

Bây giờ, khi người dùng đó cố gắng đăng nhập trên kết nối thứ hai, họ sẽ gặp lỗi sau:

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

Lưu ý rằng tất cả các thông báo bắt nguồn từ bên trong trình kích hoạt thường sẽ đến được với người dùng, chẳng hạn như thông báo lỗi và thông báo từ PRINT , được chuyển hướng đến nhật ký lỗi SQL Server.

Ngoài ra, trình kích hoạt đăng nhập không kích hoạt nếu xác thực không thành công.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi một cột hiện có thành một cột được tính toán trong SQL Server (Ví dụ T-SQL)

  2. Cách chuyển đổi chữ hoa thành chữ thường trong SQL Server - LOWER ()

  3. Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng cách sử dụng PARSE ()

  4. Sử dụng biến trong câu lệnh SQL LIKE

  5. SQL Pivot với nhiều cột