Sql server 使用全局触发器限制IP 实现白名单功能
2017-11-22 22:35
751 查看
首先新建一个表:WhiteList
字段 :IP
然后手动插入一条记录: insert into 数据库名.dbo.WhiteList(IP) values('<local machine>') --切记一定要加,否则等下触发器建立后就无法进来了(解决方案在下面)
然后创建触发器:
--创建登录触发器
-- =============================================
-- 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,都是<local machine>)
------------------------------------------
假如确实犯傻了,自信过度了,比如我这样,想把这个表内的ip都加密,结果发现不一致导致登录失败了,怎么都进不来,怎么办?按照以下步骤来:
1.打开Sql Server Manage Studio,不要登录(反正是会失败),去菜单:“文件”--“新建”--“使用当前连接的查询”,在打开的登录窗口中,服务器名称输入:ADMIN:127.0.0.1
,账号sa + 原密码,,点击登录,成功
2.在打开的查询界面执行:drop trigger tr_logon_CheckIP on all server 执行成功,就删除掉这个触发器了
3.重新登录sa,发现可以进去了
字段 :IP
然后手动插入一条记录: insert into 数据库名.dbo.WhiteList(IP) values('<local machine>') --切记一定要加,否则等下触发器建立后就无法进来了(解决方案在下面)
然后创建触发器:
--创建登录触发器
-- =============================================
-- 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,都是<local machine>)
------------------------------------------
假如确实犯傻了,自信过度了,比如我这样,想把这个表内的ip都加密,结果发现不一致导致登录失败了,怎么都进不来,怎么办?按照以下步骤来:
1.打开Sql Server Manage Studio,不要登录(反正是会失败),去菜单:“文件”--“新建”--“使用当前连接的查询”,在打开的登录窗口中,服务器名称输入:ADMIN:127.0.0.1
,账号sa + 原密码,,点击登录,成功
2.在打开的查询界面执行:drop trigger tr_logon_CheckIP on all server 执行成功,就删除掉这个触发器了
3.重新登录sa,发现可以进去了
相关文章推荐
- [Oracle] 使用触发器实现IP限制用户登录
- [Oracle] 使用触发器实现IP限制用户登录
- [Oracle] 如何使用触发器实现IP限制用户登录
- 如何使用触发器实现IP限制用户登录
- SQL Server 限制IP登陆(登陆触发器运用)
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- php实现ip白名单黑名单功能
- mysql使用触发器实现check约束功能
- php实现ip白名单黑名单功能
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
- SQL Server 限制IP登陆(登陆触发器运用)
- 使用 jquery.inputlimiter 实现字数限制功能
- 使用SQL DTS功能实现从DB/2向SQL Server传输数据
- 使用SQL DTS功能实现从DB/2向SQL Server传输数据
- 在linux下限制IP对telnet以及ftp功能使用
- SQL Server: 使用登录触发器限制只能从指定机器登录
- 使用Win32 API实现限制编辑框输入的功能