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.