如何判断上次访问sql表的时间

时间:2012-04-20 22:45:20

标签: sql-server-2008 statistics

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

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

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

我的问题是:有没有办法告诉上次访问某个表的时间,如果最后一次访问是在SQL重新启动的最后一次之前?另外,如何判断SQL上次重启的时间?

1 个答案:

答案 0 :(得分:7)

对于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]; 

我每天都记录这个表,所以我重新启动后就可以了。它们在被删除后也可以作为索引审计。