[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


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet

原文地址:http://technet.microsoft.com/zh-cn/library/bb838723.aspxMicrosoft SQL Server 2005 提供了一些工具来监控数据库...

SQL Server 2005/2008 性能监控

-- 查看性能记数器  SELECT * FROM sys.dm_os_performance_counters    -- 执行过的线程所遇到的所有等待(不是当前正在运行的线程, 为自上次重置...

SQL Server 2005/2008 控制用户权限访问表

一、需求   在管理数据库过程中,我们经常需要控制某个用户访问数据库的权限,比如只需要给这个用户访问某个表的权限,甚至是CRUD的权限,更小粒度的还可以去到某几个字段的访问权限。写这篇文章就是说明下...

修改SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径

以下仅为参照,如果有多个实例,可能会有些许不同: 本环境是SQL Server 2005 Standard Version 64-bit 和 SQL Server 2008 Standard V...

SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法

以下仅为参照,如果有多个实例,可能会有些许不同: 本环境是SQL Server 2005 Standard Version 64-bit 和 SQL Server 2008 Standard Ver...
  • ksy
  • ksy
  • 2012-04-24 10:11
  • 1008
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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