[SQL Server 2005/2008]限制(及监控)建立连接的客户端ip及db用户
2011-01-18 13:41
417 查看
SQL Server 2005开始,引入了新的触发器类型。 详细帮助文档"create trigger"。
本文描述通过触发器,限制某个数据库用户(比如 sa这种高级别的用户),只能从指定的IP登陆,这可以做为防止非法连接数据库的最后防线。
只有在 连接数据库的最后一步(账号密码验证成功后), 才会激活这个触发器。
createtriggertr_logincheckon
all server
forlogon
as
if eventdata().value('(/EVENT_INSTANCE/LoginName)[1]','sysname')=
'sa'
andeventdata().value('(/EVENT_INSTANCE/ClientHost)[1]','varchar(15)')<>
'192.168.0.23'
rollbacktran
go
本文描述通过触发器,限制某个数据库用户(比如 sa这种高级别的用户),只能从指定的IP登陆,这可以做为防止非法连接数据库的最后防线。
只有在 连接数据库的最后一步(账号密码验证成功后), 才会激活这个触发器。
createtriggertr_logincheckon
all server
forlogon
as
if eventdata().value('(/EVENT_INSTANCE/LoginName)[1]','sysname')=
'sa'
andeventdata().value('(/EVENT_INSTANCE/ClientHost)[1]','varchar(15)')<>
'192.168.0.23'
rollbacktran
go
-- 记录登陆数据库情况 CREATE TABLE [t_log_loginlog]( [loginame] [varchar](30) NULL, [ipaddress] [varchar](40) NULL, [spid] [int] NULL, [hostname] [varchar](30) NULL, [logtime] [datetime] NULL ); GO CREATE trigger [tr_log_login] on all server WITH EXECUTE AS 'sa' for logon as declare @loginame varchar(30), @ipaddress varchar(30), @spid int, @hostname varchar(30); select @loginame = eventdata().value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname'), @ipaddress = eventdata().value('(/EVENT_INSTANCE/ClientHost)[1]', 'sysname'), @spid = eventdata().value('(/EVENT_INSTANCE/SPID)[1]', 'int'); if @ipaddress not in ('127.0.0.1', '<local machine>') --@loginame = 'sa' or @loginame = 'jav' begin select @hostname = [host_name] from sys.dm_exec_sessions where session_id = @spid; insert into DBperf.dbo.t_log_loginlog(loginame,ipaddress,spid,hostname, logtime) values( @loginame,@ipaddress,@spid,@hostname, getdate() ); end GO ENABLE TRIGGER [tr_log_login] ON ALL SERVER GO
相关文章推荐
- Sql Server 2005、2008 数据库备份还原后出现“受限制用户”问题的解决[转]
- 远程连接SQL Server 2005/2008,服务器端和客户端配置
- Vs2010在没有安装SQL Server 2005/2008 Express时如何连接MDF数据文件?
- sql 2005 用户 sa 登录失败,该用户与可信SQL Server连接无关联 错误18452
- Java 摘自网络的一个数据库连接及操作类DB【以SQL Server 2005为例】
- Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异
- 在建立与服务器的连接时出错。在连接到 sql server 2005 时 在默认的设置下 sql server 不允许进行远程连接
- Sql Server 2005 数据库备份还原后出现“受限制用户”问题的解决
- sql server 2000和sqlserver 2005 连接字符串的区别 IWAS0126E尝试建立连接1遇到问题,原因:No suitable driver
- SQL Server 2005/2008 控制用户权限访问表
- 错误:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) 解
- Sql Server 2008 在备份还原后出现数据库“受限制用户”的问题解决
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连
- SQL Server 2005 Express 远程连接 客户端 远程访问 设置 全攻略 (适用 SQL Server 2005 其他版本)
- 远程连接SQL Server 2008,服务器端和客户端配置
- Sql Server 2005 数据库备份还原后出现“受限制用户”问题的解决
- Sql Server 2005 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联
- 远程连接SQL Server 2008,服务器端和客户端配置
- SQL SERVER 2005数据导入,提示无法建立数据流连接
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server不允许进行远程连接可能会导致此失败