Sie können dafür einen Anmeldetrigger verwenden.
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
Wenn Sie versuchen, eine Verbindung von einer nicht autorisierten IP-Adresse herzustellen, wird folgende Fehlermeldung angezeigt:
Logon failed for login 'bob' due to trigger execution.
Denken Sie daran, dass Anmeldeauslöser möglicherweise böse sind und möglicherweise auch alle Benutzer von der Instanz ausschließen. Achtung!
Ich denke jedoch, dass Sie das nicht wirklich tun müssen. Wenn Sie Verbindungen über eine Liste bekannter Adressen aktivieren möchten, ist eine Firewall das am besten geeignete Tool für diesen Job . Das Schlimmste, was passieren kann, ist, dass der falsche Benutzer eine Verbindung von einer bekannten IP-Adresse herstellt. Dies ist sehr unwahrscheinlich, wenn Benutzer ihre Anmeldeinformationen sorgfältig aufbewahren.
Berücksichtigen Sie außerdem, dass IP-Adressen gefälscht werden können, sodass ich nicht sicher bin, welchen Grad an zusätzlicher Sicherheit Sie bereitstellen würden.
Sie können dies mithilfe des Anmeldetriggers wie folgt erreichen
Sobald der Trigger erstellt wurde, finden Sie ihn unter Serverobjekte -> Registerkarte Trigger
Von meinem Blog connectsql.com
quelle