当前位置: 代码迷 >> Sql Server >> SQL server怎么知道用户多久没有对数据库进行访问与操作
  详细解决方案

SQL server怎么知道用户多久没有对数据库进行访问与操作

热度:10   发布时间:2016-04-27 11:39:01.0
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)GOALTER trigger trg_deny_logon on all server for logonas        INSERT INTO test.dbo.logoninfo VALUES (original_login(),GETDATE())go
------解决方案--------------------
用fn_dblog()看到语句比较困难了,现在只有第三方的工具可以解析SQL Server Log,当然网上也有很多人自己写的解析SQL Server Log的,但是我测试过几个都是有问题的。

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