2011-09-09 20 views

回答

4

是 - 查詢如這應該給你的信息,你需要:

SELECT 
     last_user_seek, 
     last_user_scan 
    FROM 
     sys.dm_db_index_usage_stats 
    WHERE 
     database_id = DB_ID() and object_id = object_id('tablename') 

爲SQL 2000更新:不 - 我相信有在SQL 2000

得到這個信息的方式沒有內置
+0

sys.dm_db_index_usage_stats似乎在SQL Server 2000中不可用? – john2x

+1

@ john2x - 不,它在2000年不存在。請用現在的版本標記您的問題,因爲它現在是2011年! –

+0

不要以爲2000年就有辦法恐怕。 – Timbo

5

對於SQL Server 2005+

sys.dm_db_index_usage_stats告訴你當一個計劃是最後執行的是引用一個特定的表(not necessarily that the table itself was accessed in the execution of that plan)。

此元數據不會在服務重新啓動時持續存在,因此您需要在服務器啓動一段時間後檢查它。

對於SQL Server 2000

不,這是不可能的,我相信。您可以通過查看統計信息更新時間和sysindexes.rowmodctr來推斷上次修改時間,但我不認爲上次選擇它們時是在任何地方持續存在的。

1

總的來說,我會警惕基於日期/時間的判斷。某些應用程序可能具有很少使用的功能。例如,持有年終財務報告的表格可能每年只更新一次。或者有一天審計師可能會出現並要求前幾年的財務報告,如果公司不能提供這些信息,那麼他們將面臨很大的麻煩。

如果您有權訪問代碼,那麼我建議掃描查詢以訪問每個表。

如果您不這樣做,那麼您可能會從其他答案推薦的索引使用統計中獲得一些信息。但謹慎行事!

我看你有SQL Server 2000.使用統計不在這個版本,我不認爲有任何等效。

如果表中有日期時間列,您可以看到這些日期是什麼時候的,但不會告訴您它們上次訪問的時間。

如果表中有時間戳列,則可以將上次時間戳與最新數據庫時間戳進行比較:@@dbts並查看這些值是否非常不同。但這是一個不可靠的猜測。

相關問題