【问题标题】:What tables were accessed last最后访问了哪些表
【发布时间】:2012-08-23 17:51:42
【问题描述】:

我想知道被访问的前 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

现在我需要这个用于表格。有什么想法或链接吗?

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    您可以轻松地一次完成一个数据库,只需稍微调整您的代码:

    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;
    

    当然,这只是在上次服务重启或重新配置后才好。

    如果您想针对每个数据库执行此操作,可以使用我的自定义 sp_MSforeachdb 替换:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多