【问题标题】:How to tell when a sql table was last accessed如何判断上次访问 sql 表的时间
【发布时间】:2012-05-02 12:38:01
【问题描述】:

这个问题基本上是这个问题的延伸:

How can I tell if a database table is being accessed anymore? Want something like a "SELECT trigger"

在作者在他的帖子中作为解决方案提供的查询中,我假设空值意味着自上次重新启动 SQL Server 以来尚未访问过表。

我的问题是:如果上次访问是在上次 SQL 重新启动之前,是否有办法判断上次访问表的时间?另外,如何知道上次 SQL 的重启时间?

【问题讨论】:

  • 你能不能只允许通过存储过程访问数据?
  • @mellamokb 有很多流程正在进行,其中很多我什至还不知道,如果我们这样做,就会中断。从 DBA 的角度来看,SP 很棒,但从这个开发人员的角度来看,他们“通常”不会提供显着的好处来超过他们的缺点。 Jeff Atwood 实际上有一篇关于 Coding Horror 的精彩文章,我完全同意:codinghorror.com/blog/2004/10/…

标签: sql-server-2008 statistics


【解决方案1】:

对于 SQL Server 2008 中的 sql server 启动时间,

select sqlserver_start_time from sys.dm_os_sys_info

对于服务器重启后的最后一次用户访问,

select DB_NAME(us.[database_id]) as [db], OBJECT_NAME(us.[object_id], us.[database_id]) as [object], 
MAX(us.[last_user_lookup]) as [last_user_lookup], MAX(us.[last_user_scan]) as [last_user_scan], MAX(us.[last_user_seek]) as [last_user_seek] 
from sys.dm_db_index_usage_stats as us 
where us.[database_id] = DB_ID() AND us.[object_id] = OBJECT_ID('tblname')
group by us.[database_id], us.[object_id]; 

我每天都记录这张表,以便在重新启动后拥有它。它也可以在它们被删除后充当索引审计。

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2017-10-20
    • 2011-09-10
    • 2014-06-14
    相关资源
    最近更新 更多