我正在嘗試使用此查詢來獲取資料庫中最常訪問的表:
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 中的工具)可以在不需要此權限的情況下獲得相同或相似的結果?
uj5u.com熱心網友回復:
你也可以使用這個:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344755.html
標籤:sql sql-server 查询语句 sql-server-2014
