Vous pouvez utiliser un déclencheur d'ouverture de session pour cela.
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 vous essayez de vous connecter à partir d'une adresse IP non autorisée, vous obtiendrez une erreur:
Logon failed for login 'bob' due to trigger execution.
N'oubliez pas que les déclencheurs de connexion sont potentiellement malveillants et peuvent également finir par bloquer tout le monde hors de l'instance. Faites attention!
Cependant, je pense que vous n'avez pas vraiment besoin de faire cela. Si vous souhaitez activer les connexions à partir d'une liste d'adresses connues, un pare-feu est l'outil le plus approprié pour le travail . La pire chose qui puisse arriver est le mauvais utilisateur se connectant à partir d'une adresse IP connue, ce qui est peu probable si les utilisateurs conservent soigneusement leurs informations d'identification.
Tenez également compte du fait que les adresses IP peuvent être usurpées, donc je ne sais pas quel degré de sécurité supplémentaire vous fourniriez.
Vous pouvez y parvenir en utilisant le déclencheur d'ouverture de session comme suit
Une fois le déclencheur créé, vous pouvez le trouver sous Objets serveur -> onglet Déclencheurs
Depuis mon blog connectsql.com
la source