存取sys.dm_db_index_usage_stats的权限
技术问答
229 人阅读
|
0 人回复
|
2023-09-14
|
因此,我有一个网站供内部使用,可以跟踪员工的大量统计数据。其中之一是他们是否缺乏任何报告。由于没有报告的项目列表每两天只更新一次,而且有三天的宽限期,我将记录为缺乏报告的项目记录的日期(releaseDt)上次数据库更新时间(@lastupdate)。这样,如果报告数据库没有更新,但报告已经完成,网站就不会因为缺乏报告而招聘。
7 O( [% K: Z+ t9 a1 b( QSQL代码可以在管理员级别的特权下正常工作,但出于明显原因,我不允许ASP.NET账户有服务器管理员级别。
- }. [4 l+ \. d5 s我已经建立了一个SQL帐户,ASP.NET! ]: q& M$ U& [: p; C3 f
C#代码用于登录,所有其他权限都很好。(仅对其使用的特定数据库具有读取访问权限。)我不知道访问权限赋予了什么权限,以便读取这个特定的动态管理视图。) v: j- A$ N# E& k
希望使用Management Studio或GRANTSQL语句提出建议。
7 U0 P- y2 U) o( _这似乎与视图有关:
/ B. _8 p! d$ gsys.dm_db_index_usage_stats(Transact-SQL)$ G5 M) T/ i0 B' s
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) 您不能授予SELECTDMV,因为针对服务器范围的DMV禁止策略:
& d- }' z6 I7 k/ \3 AGRANT SELECT ON sys.dm_db_index_usage_stats TO peon;结果是:0 Y( G$ m! M$ \
消息4629,等级16,状态10,第一行2 L8 q9 c1 g4 s* h( J
只在当前数据库中master只有在服务器范围内,才能授予目录视图或系统存储过程或扩展存储过程的权限。: S, n. [" G. U8 z5 j
您引用的BOL页面告诉你需要授予权限VIEW SERVER STATE。可应用于此master的登录名:; Q) s' P* _! y3 B6 T) |2 S
USE master;GOGRANT VIEW SERVER STATE TO peon;-- if it's a Windows login then:GRANT VIEW SERVER STATE TO [Domain\peon];然而,没有办法为每个数据库执行此操作。你不应该担心所有的问题,因为即使有人知道如何使用它ASP.NET账户凭证入侵您的服务器,他们所能做的就是9 H5 K( \: a" s3 B& Z
查看 服务器状态,他们什么都改变不了。 |
|
|
|
|
|