日期:2014-05-17  浏览次数:20420 次

SQL server怎样知道用户多久没有对数据库进行访问与操作
SQL server怎样知道用户多久没有对数据库进行访问与操作,如select 、insert、update、delete、truncate table等(执行任何数据库命令)?
谢谢

------解决方案--------------------
可以去查看数据库的日志(LOG),或者跟踪索引

select * from sys.dm_db_index_usage_stats where user_seeks=0 and user_scans =0 ;


------解决方案--------------------
SQL code

--日志裡應有記錄,但沒研究過都是記錄的什麼玩意
dbcc log(yourdatabase,1)
dbcc log(yourdatabase,2)
dbcc log(yourdatabase,3)
dbcc log(yourdatabase,4)
/*
實際上如果想記錄這些,可以在數據庫級寫數據庫事件觸發器,也可以在模式級寫觸發器進行記錄相關信息
*/

------解决方案--------------------
写个登录触发器,在触发器中记录用户登录时间。
------解决方案--------------------
SQL code

--创建登录用户表
CREATE TABLE logoninfo
(
    logonname VARCHAR(100),
    logondate DATETIME
)
GO
ALTER trigger trg_deny_logon 
on all server 
for logon
as
        INSERT INTO test.dbo.logoninfo VALUES (original_login(),GETDATE())
go

------解决方案--------------------
用fn_dblog()看到语句比较困难了,现在只有第三方的工具可以解析SQL Server Log,当然网上也有很多人自己写的解析SQL Server Log的,但是我测试过几个都是有问题的。

如果你要监控某个表的操作,可以用Databaes Aduit,还可以对用户进行Filter.