2012-08-23 64 views
1

我想知道訪問過的前N個表格。我只有數據庫和谷歌地址的大多數鏈接最後日期訪問特定的表。最近訪問了哪些表格

SELECT DatabaseName, MAX(LastAccessDate) LastAccessDate 
FROM 
    (SELECT 
     DB_NAME(database_id) DatabaseName 
     , last_user_seek 
     , last_user_scan 
     , last_user_lookup 
     , last_user_update 
    FROM sys.dm_db_index_usage_stats) AS PivotTable 
UNPIVOT 
    (LastAccessDate FOR last_user_access IN 
     (last_user_seek 
     , last_user_scan 
     , last_user_lookup 
     , last_user_update) 
    ) AS UnpivotTable 
GROUP BY DatabaseName 
HAVING DatabaseName NOT IN ('master', 'tempdb', 'model', 'msdb') 
ORDER BY 2 

現在我需要這個表。任何想法或鏈接,請?

回答

4

您可以一次做到這一點很容易一個數據庫,有輕微的調整你的代碼:

USE Your_Database; 
GO 

SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]), 
    [object]  = OBJECT_NAME([object_id]), 
    LastAccessDate = MAX(LastAccessDate) 
FROM 
    (SELECT 
     [object_id] 
     , last_user_seek 
     , last_user_scan 
     , last_user_lookup 
     , last_user_update 
    FROM sys.dm_db_index_usage_stats 
    WHERE database_id = DB_ID()) AS PivotTable 
UNPIVOT 
    (LastAccessDate FOR last_user_access IN 
     (last_user_seek 
     , last_user_scan 
     , last_user_lookup 
     , last_user_update) 
    ) AS UnpivotTable 
GROUP BY [object_id] 
ORDER BY LastAccessDate; 

當然,這是自上次服務重新啓動或重新配置唯一的好。

http://sqlblog.com/blogs/aaron_bertrand/archive/2008/05/06/when-was-my-database-table-last-accessed.aspx

如果你想這樣做,每個數據庫,你可以使用我的自定義sp_MSforeachdb更換:

http://sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/a-more-reliable-and-more-flexible-sp-msforeachdb.aspx

http://mssqltips.com/tip.asp?tip=2201

+0

我剛發現你的博客,帖子和打算在這裏發佈。 :) http://sqlblog.com/blogs/aaron_bertrand/archive/2008/05/06/when-was-my-database-table-last-accessed.aspx – Taryn

+0

工程像魔術。你是我的榜樣之一。十分感謝 – codingbiz