gpt4 book ai didi

sql - 存取sys.dm_db_index_usage_stats的权限

转载 作者:行者123 更新时间:2023-12-04 13:42:03 27 4
gpt4 key购买 nike

因此,我有一个供内部使用的网站,该网站可以跟踪员工的大量统计数据。其中之一就是他们是否缺少任何报告。由于尚无报告的项目列表仅每两天更新一次,并且这些报告有3天的宽限期,因此,我将记录为缺少报告的项目记录的日期(releaseDt)与上次更新数据库的时间(@lastupdate)。这样,如果报告数据库尚未更新但报告已完成,则该网站不会因为缺少报告而招人。

SQL代码在管理员级别的特权下可以正常工作,但是出于明显的原因,我不让ASP.NET帐户具有服务器管理员级别。

我已经建立了一个SQL帐户,ASP.NET C#代码用于登录,并且其他所有权限都很好。 (仅对其使用的特定数据库具有读取访问权限。)我无法弄清楚该访问权限赋予了哪些权限,以便可以读取此特定的动态管理 View 。

希望使用Management Studio或GRANT SQL语句提出建议。

这似乎具有有关 View 的相关信息:

sys.dm_db_index_usage_stats (Transact-SQL)

DECLARE @lastupdate datetime
SELECT @lastupdate = last_user_update from sys.dm_db_index_usage_stats
WHERE OBJECT_ID = OBJECT_ID('MissingReport')

SELECT
COALESCE(Creator, 'Total') AS 'Creator',
COUNT(*) AS Number,
'$' + CONVERT(varchar(32), SUM(Cost), 1) AS 'Cost'
FROM MissingReport
WHERE NOT(
[bunch of conditions that make something exempt from needing a report]
OR
(
DATEDIFF(day,ReleaseDt,@lastupdate) <= 3
)
)
GROUP BY Creator WITH ROLLUP

最佳答案

您不能在DMV上授予SELECT,因为针对服务器范围的DMV的策略禁止这样做:

GRANT SELECT ON sys.dm_db_index_usage_stats TO peon;

结果是:

Msg 4629, Level 16, State 10, Line 1
Permissions on server scoped catalog views or system stored procedures or extended stored procedures can be granted only when the current database is master.



BOL page you referenced告诉您需要授予 VIEW SERVER STATE。您可以将其应用于master的登录名:
USE master;
GO
GRANT VIEW SERVER STATE TO peon;
-- if it's a Windows login then:
GRANT VIEW SERVER STATE TO [Domain\peon];

但是,没有一种方法可以针对每个数据库执行此操作。并不是您应该担心所有问题,因为即使有人可以弄清楚如何使用ASP.NET帐户凭据入侵您的服务器,他们所能做的只是查看服务器状态,他们什么也不能更改。

关于sql - 存取sys.dm_db_index_usage_stats的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com