Maintenance
在 MS SQL 中,我如何找出哪些表長時間沒有被查詢或更新?
我正在維護一個由幾個系統共享的數據庫。多年來,其中一些系統已被棄用,許多表實際上是孤立的。是否可以執行查詢以找出自某個日期以來未使用哪些表?
謝謝。
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