Puede usar un Logon Trigger para eso.
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
Si intenta conectarse desde una IP no autorizada, recibirá un error:
Logon failed for login 'bob' due to trigger execution.
Recuerde que los disparadores de inicio de sesión son potencialmente malvados y también pueden terminar bloqueando a todos fuera de la instancia. ¡Ten cuidado!
Sin embargo, creo que realmente no necesitas hacer eso. Si desea habilitar conexiones desde una lista de direcciones conocidas, un firewall es la herramienta más adecuada para el trabajo . Lo peor que podría suceder es que el usuario incorrecto se conecte desde una dirección IP conocida, lo cual es bastante improbable si los usuarios mantienen sus credenciales con cuidado.
Además, tenga en cuenta que las direcciones IP pueden ser falsificadas, por lo que no estoy seguro de qué grado de seguridad adicional proporcionaría.
Puede lograr esto usando el inicio de sesión de la siguiente manera
Una vez creado el disparador, puede encontrarlo en Objetos del servidor -> pestaña Disparadores
Desde mi blog conectaql.com
fuente