在 MS SQL 中,如何找出长时间未查询或更新的表?

Fun*_*ung 5 sql-server maintenance

我正在维护一个由几个系统共享的数据库。多年来,其中一些系统已被弃用,许多表实际上是孤立的。是否可以运行查询来找出自某个日期以来没有使用过哪些表?

谢谢。

RTh*_*mas 9

sys.objects 表会跟踪表结构上次修改的时间,但最接近的是通过查询 sys.dm_db_index_usage_stats 来查找表数据的上次更新或使用时间。这会跟踪索引更新(包括堆或没有索引的表)。 问题是,它只跟踪自上次服务器重新启动以来的数据。

select db_name(database_id) dbname,
object_name(object_id,database_id) oname,
MAX(CASE WHEN last_user_update < last_system_update THEN last_system_update ELSE last_user_update END) as LastUpdated 
from sys.dm_db_index_usage_stats 
group by database_id,object_id
order by db_name(database_id),object_name(object_id,database_id)
Run Code Online (Sandbox Code Playgroud)

此示例查询是从以下链接借用的:http : //www.sqlservercentral.com/Forums/Topic852747-146-1.aspx#bm852757