2009-02-16 106 views

回答

1

是 - 你可以創建一個跟蹤,MSDN - Data Access Tracing in SQL Server 2005。另外,如果你知道什麼是訪問它們(例如通過存儲過程),你可以在它們中留下跟蹤信息(向表中添加行),然後你就可以看到實際運行的是什麼。這不太安全 - 你被證明是一個負面因素,因爲你會發現難以趕上偶爾的命中。

我們使用的一種方法是隻重命名錶,到'zzz_OldName'並且讓它們留在那裏一段時間,定期修剪該模式的那個區域。

+0

+1'zzz_OldName''Scream Test'。我們在表名後加上日期,以便說一個月後,我們知道現在我們可以丟棄哪些表。同樣,對於任何「以防萬一」表,我們將TEMP_MyTableName_YYYYMMDD命名爲TEMP_MyTableName_YYYYMMDD - 所有按alpha分組的TEMP * – Kristen 2009-02-16 11:11:36

0

據我所知,在Sql Server中這樣的數據沒有統計數據。儘管您可以使用Sql Profiler在一段時間內獲取使用數據。

+0

如果您的數據通過SProcs存儲到表中,我不確定Profiler會幫助哪些實際表受到影響 - 但我可能是錯誤的! – Kristen 2009-02-16 11:12:40

+0

它不會但至少會顯示哪些SP被使用,哪些不是,這將幫助您找到未使用的表。 – 2009-02-16 11:14:19

0

您可以檢查您的DMV(Dynamic Management Views)。如果你的表都有一個主鍵,那麼就有一個主鍵索引,並且如果該索引永遠不被讀取,你的表根本就沒有被使用。

但請注意,這些是動態管理視圖 - 每次SQL Server啓動時它們都會重置爲0。你可能要考慮無論是SQL Server 2008中Performance DAta CollectorSQL DMV Stats項目爲SQL Server 2005刪除表:-)

馬克

0

也可以把之前拍攝過的長時間DMV數據在Table上觸發以在「WasFoundToBeUsedAfterAll」表中存儲TableName + GetDate()

您可能希望UpSert已存在的任何行,也許只有當現有的Date已經24小時或更長時間時,纔可以插入多個行 - 這隻會成爲維護問題!

0
-- shows table accesses since last MSSQL reboot via index stats. 
-- NULL columns imply table wasnt accessed since the last restart. 
SELECT 
    t.name AS 'Table', 
    Count(i.user_seeks) as 'Indexes', 
    SUM(i.user_seeks + i.user_scans + i.user_lookups) 
    AS 'Total accesses', 
    SUM(i.user_seeks) AS 'Seeks', 
    SUM(i.user_scans) AS 'Scans', 
    SUM(i.user_lookups) AS 'Lookups', 
    SUM(i.user_updates) AS 'Updates' 
FROM 
    sys.dm_db_index_usage_stats i RIGHT OUTER JOIN 
    sys.tables t ON (t.object_id = i.object_id) 
GROUP BY 
    i.object_id, 
    t.name 
ORDER BY [Total accesses] DESC