Maintenance

在 MS SQL 中,我如何找出哪些表長時間沒有被查詢或更新?

  • May 23, 2011

我正在維護一個由幾個系統共享的數據庫。多年來,其中一些系統已被棄用,許多表實際上是孤立的。是否可以執行查詢以找出自某個日期以來未使用哪些表?

謝謝。

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)

此範例查詢是從以下連結借用的: http ://www.sqlservercentral.com/Forums/Topic852747-146-1.aspx#bm852757

引用自:https://dba.stackexchange.com/questions/2888