因此,我有一个内部使用的网站,它追踪员工的一堆stats。其中之一是他们是否错过任何报告。由于没有报告的项目列表每两天才会更新一次,并且这些报告有3天的宽限期,所以我将项目记录为缺少报告的日期(releaseDt)与上次数据库更新(@lastupdate)。这样,如果报告数据库没有更新,但报告已完成,则该网站不会因为缺少报告而惹恼某人。权限访问sys.dm_db_index_usage_stats
的SQL代码工作正常使用管理员级别的privledges,但显而易见的原因,我不会让ASP.NET帐户已服务器管理水平。
我已经设置了ASP.NET的C#代码用来登录SQL帐户,以及其他一切权限都是精品。 (只对其使用的特定数据库具有读访问权限。)我无法弄清楚为了有权读取这个特定的动态管理视图而访问它。
会使用两种Management Studio中,或使用GRANT
SQL语句升值的建议。
这似乎在问题有相关的查看信息:
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
只是为了迂回清晰,这是一个'动态管理视图',而不是'系统表'。 – 2012-07-13 15:53:13
更正了这一点。 – sylverfyre 2012-07-13 15:58:30
当然,我认为代码或背景故事也不相关 - 问题可能是一个或两个班轮,而不会失去任何意义。 – 2012-07-13 16:00:10