Bạn có thể sử dụng Trình kích hoạt đăng nhập cho việc đó.
CREATE TRIGGER TR_check_ip_address
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @ip_addr varchar(48)
SELECT @ip_addr = client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID
IF ORIGINAL_LOGIN() = 'bob' AND @ip_addr <> '127.0.0.1'
ROLLBACK;
END
Nếu bạn cố gắng kết nối từ một IP trái phép, bạn sẽ gặp lỗi:
Logon failed for login 'bob' due to trigger execution.
Hãy nhớ rằng Logon Triggers có khả năng xấu và cuối cùng cũng có thể khóa tất cả mọi người ra khỏi ví dụ. Hãy cẩn thận!
Tuy nhiên, tôi nghĩ bạn không thực sự cần phải làm điều đó. Nếu bạn muốn kích hoạt các kết nối từ danh sách các địa chỉ đã biết, tường lửa là công cụ phù hợp nhất cho công việc . Điều tồi tệ nhất có thể xảy ra là người dùng kết nối sai từ một địa chỉ IP đã biết, điều này khá khó xảy ra nếu người dùng giữ thông tin đăng nhập của họ một cách cẩn thận.
Ngoài ra, hãy tính đến việc các địa chỉ IP có thể bị giả mạo, vì vậy tôi không chắc bạn sẽ cung cấp mức độ bảo mật bổ sung nào.