这个问题基本上是这个问题的延伸:
如何判断是否正在访问数据库表?想要类似“SELECT 触发器”的东西
在作者在他的帖子中作为解决方案提供的查询中,我假设空值意味着自上次重新启动 SQL Server 以来未访问过表。
我的问题是:如果上次访问是在上次 SQL 重新启动之前,是否有办法判断上次访问表的时间?另外,我怎样才能知道上次重新启动 SQL 的时间?
这个问题基本上是这个问题的延伸:
如何判断是否正在访问数据库表?想要类似“SELECT 触发器”的东西
在作者在他的帖子中作为解决方案提供的查询中,我假设空值意味着自上次重新启动 SQL Server 以来未访问过表。
我的问题是:如果上次访问是在上次 SQL 重新启动之前,是否有办法判断上次访问表的时间?另外,我怎样才能知道上次重新启动 SQL 的时间?
对于 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];
我每天都记录这张表,所以我在重启后就有了。它也可以在它们被删除后充当索引审计。