SQLSERVER记录登录用户的登录时间

SQLSERVER记录登录用户的登录时间

前一阵子经理问我能不能把用户最后一次登录我们的业务数据库的时间记录下来,因为之前有人修改过数据库sa用户

的登录密码,所以我们要记录一下。

我查了一下资料,好像不能记录谁登录过业务库,只能记录谁登录过SQLSERVER

数据库版本是SQL2005  ,操作系统:Windows7

下面是本人写的一个脚本,我的实现原理是使用触发器,触发器是登录触发器,范围是整个服务器范围,如果有人登录过,就使用

bcp命令把登录信息记录日志文件

1、如果原来数据库已经存在触发器把他删掉

1 USE MASTER
2 GO
3 DROP TRIGGER trg_logon_attempttest ON ALL SERVER
4 GO

2、在D盘新建一个文本文件 d:\Logondata.txt  这个文本文件用来记录登录信息

3、创建一个登录触发器审核登录事件

 1 CREATE TRIGGER trg_logon_attempttest
 2 ON ALL SERVER
 3 WITH EXECUTE AS'sa'  
 4 FOR LOGON,ALTER_LOGIN
 5 AS
 6 BEGIN
 7 DECLARE
 8     @cmd nvarchar(4000)
 9 ;
10 SELECT
11     @cmd = 'ECHO '
12         + ORIGINAL_LOGIN()+ CHAR(9) + CONVERT(varchar(100), GETDATE(), 121)
13         + ' >> d:\Logondata.txt'
14 ;
15 DECLARE @tb_re TABLE(re varchar(4000));  
16 INSERT @tb_re exec master.. xp_cmdshell @cmd
17 END
18 GO

这样当每次登录SQLSERVER的时候就会记录登录时间和登录用户名

在创建触发器前,需要开启xp_cmdshell扩展存储过程,并且不要禁用sa用户

不然会遇到下面这种情况,登录不了服务器,我的计算机名是joe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值