【问题标题】:Find most frequently accessed tables in SQL Server 2014 without VIEW SERVER STATE permission在没有 VIEW SERVER STATE 权限的情况下查找 SQL Server 2014 中最常访问的表
【发布时间】:2021-12-16 09:26:14
【问题描述】:

我正在尝试使用此查询来获取数据库中访问频率最高的表:

SELECT t.NAME AS tname,
    SUM(ius.user_seeks + ius.user_scans + ius.user_lookups) AS accesses
FROM db_name.sys.dm_db_index_usage_stats ius
INNER JOIN db_name.sys.tables t ON t.OBJECT_ID = ius.object_id
GROUP BY database_id, t.name
ORDER BY accesses DESC

但它失败并出现错误

Msg 300, Level 14, State 1, Line 1
VIEW SERVER STATE permission was denied on object 'server', database 'master'.

可以理解,我们的后端托管公司不想将 VIEW SERVER STATE 权限授予任何随机实习生。是否有无需此权限即可获得相同或相似结果的查询(或 SQL Server 中的工具)?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2014


    【解决方案1】:

    你也可以这样用:

    SELECT t.name, range_scan_count+singleton_lookup_count AS accesses, * 
    FROM sys.dm_db_index_operational_stats(db_id(),NULL,NULL,NULL) os
    INNER JOIN sys.tables t ON t.object_id = os.object_id
    ORDER BY accesses DESC
    

    这应该与VIEW DATABASE STATE 权限一起使用(即使您没有VIEW SERVER STATE 权限)。

    但是,此查询返回的内容与您的查询不同。在此处查看差异:http://web.archive.org/web/20180410202012/http://sqlblog.com:80/blogs/paul_white/archive/2011/02/17/Seeking-Without-Indexes.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多