[SQL Server 2005/2008]限制(及监控)建立连接的客户端ip及db用户

原创 2011年01月18日 13:41:00

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

 

 

-- 记录登陆数据库情况

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


 

只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接的方法

有时候,我们只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接,怎么办呢?解决方法可以直接在防火墙中做限制,只允许与指定的IP地址建立1433的通讯。当然,从更为安全的角...

获取SQL Server中连接的客户端IP地址

有时候需要获取连接到SQL Server服务器上的客户端IP地址,用什么办法呢?SELECT *FROM sys.dm_exec_connections WHERE session_id = @@SP...

SQL Server 连接问题-TCP/IP

出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip.aspx TCP/IP的基本工作原理这里就不浪费...

远程连接SQL Server 2005/2008,服务器端和客户端配置

(1)这里只指出关键设置步骤,其他详细部分网上到处都是,不赘述; (2)感谢http://blog.csdn.net/htl258/archive/2010/03/28/5424234.aspx,给...

限制访问SQL Server的客户端IP地址

http://www.cnblogs.com/chenxizhang/archive/2009/06/02/1494212.html 今天被问到这个问题,以前没有处理过,在网上找了一些资料,...

怎样在Sql server2008客户端管理器修改多于200行的数据

在修改数据时,当数据记录的行数大于200行时,对表内容进行修改操作,当我用鼠标右键点击表时,出现: 然而,并没有我想要的编辑200行后的数据。 方法一: 1、在表上,鼠标...

DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC INPUTBUFFER显示从客户端发送到 Microsoft SQL Server 实例的最后一个语句

显示从客户端发送到 Microsoft SQL Server 实例的最后一个语句。  Transact-SQL 语法约定 语法 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[SQL Server 2005/2008]限制(及监控)建立连接的客户端ip及db用户
举报原因:
原因补充:

(最多只允许输入30个字)