首先新建一個表:
字段 :IP
然后手動插入一條記錄: into 數據庫名.dbo.(IP) ('') --切記一定要加數據庫限制ip訪問,否則等下觸發器建立后就無法進來了(解決方案在下面)
然后創建觸發器:
--創建登錄觸發器

-- =============================================
-- Description: <限制本機和指定的IP登陸>
-- =============================================
CREATE TRIGGER [tr_logon_CheckIP]
ON ALL SERVER

FOR LOGON
AS
BEGIN
IF IS_SRVROLEMEMBER('sysadmin') = 1
BEGIN

DECLARE @IP NVARCHAR(15);
SET @IP = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'));
IF NOT EXISTS(SELECT IP FROM [數據庫名].[dbo].[WhiteList] WHERE IP = @IP )
ROLLBACK;

END;
END;
成功,重新登錄可以進入
可以插入新的IP,然后用其他終端來測試(服務器本機不好測試,因為無論怎么改IP,都是)
------------------------------------------
假如確實犯傻了,自信過度了,比如我這樣,想把這個表內的ip都加密數據庫限制ip訪問,結果發現不一致導致登錄失敗了,怎么都進不來,怎么辦?按照以下步驟來:
1.打開Sql ,不要登錄(反正是會失敗),去菜單:“文件”--“新建”--“使用當前連接的查詢”,在打開的登錄窗口中,服務器名稱輸入:ADMIN:127.0.0.1
,賬號sa + 原密碼,,點擊登錄,成功
2.在打開的查詢界面執行:drop on all 執行成功,就刪除掉這個觸發器了
3.重新登錄sa,發現可以進去了