使用触发器限制数据库连接IP
如:
USE master GO
if exists (select * from sysobjects where name = 'tr_LoginCheck' and type='TR')
drop trigger dbo.tr_LoginCheck
GO
CREATE TRIGGER tr_LoginCheck ON ALL SERVER
FOR LOGON AS IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.27'
ROLLBACK TRAN
GO
结果只有 192.168.1.27能够登陆SQL
本地都无法登陆 研究半天找到解决方案:
使用DAC登陆执行删除触发器语句
1、进入DOS 执行 sqlcmd -A -S localhost //服务器名 当前示例是本机
2、执行删除触发器语句 DROP TRIGGER tr_LoginCheck ON ALL SERVER
3、输入GO
4、 OK (有可能结果提示执行失败,但是实际已经删除触发器了 可以试试)