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

解决方案 »

  1.   

    可以去查看数据库的日志(LOG),或者跟踪索引select * from sys.dm_db_index_usage_stats where user_seeks=0 and user_scans =0 ;
      

  2.   


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

  3.   

    dbcc log(yourdatabase,1)显示出来的记录读不懂,
    怎样读dbcc log的信息
      

  4.   


    --创建登录用户表
    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登录后查看logoninfo信息
      

  5.   

    哦,谢谢怎样读dbcc log的信息
      

  6.   

    使用fn_dblog,但是查询是不会记在里边的。http://blog.csdn.net/smithliu328/article/details/7800628
      

  7.   

    谢谢楼上的老兄,
    SELECT * FROM ::fn_dblog('', '')
     WHERE AllocUnitName is Not null and AllocUnitName like '%表名_%'   语句可以查询到到某一表的操作,但是其记录中大不部分是二进制存储的,象logrecord的信息完全 不懂,请问当对一个表进行Insert、Update、Delete等操作时,怎样在该语句中获得到对该表操作的T-SQL语句的真实内容呢?insert tablename (f1,f2) values ('11','22'),谢谢!
      

  8.   

    用fn_dblog()看到语句比较困难了,现在只有第三方的工具可以解析SQL Server Log,当然网上也有很多人自己写的解析SQL Server Log的,但是我测试过几个都是有问题的。如果你要监控某个表的操作,可以用Databaes Aduit,还可以对用户进行Filter.
      

  9.   

    Databaes Aduit也是个工具软件吧,它可以分析出对表进行insert、delete、update等语句吗