[英]How do I grant limited access to sysprocesses in SQL Server 2005?
我正在实现一些基本的SQL Server监视,以监视过多的阻塞。
我有一个看起来像这样的存储过程:
CREATE PROCEDURE [dbo].[bsp_GetBlockedProcessCount]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @count INT
SELECT @count = COUNT(*)
FROM master.dbo.sysprocesses WITH (NOLOCK)
WHERE blocked > 0
RETURN @count
END
当我在管理员环境中执行此操作时,会得到正确的答案。 当我在具有有限权限的用户(即Web服务器)的上下文中执行此操作时,无论真实答案如何,我都会得到零。
我可以想到一些解决方案,但我对其中任何一个都不满意:
我可以向该用户授予VIEW SERVER STATE特权,但这比该用户应具有的权限更多:
GRANT VIEW SERVER STATE TO [Webserver]
从SQL作业运行proc,并将结果放在Web服务器可以获取的地方,但这很麻烦而且很复杂。
我敢肯定有更好的解决方案。 有什么建议么?
我很高兴我不知道第一手的答案:)但是我玩过EXECUTE AS和REVERT来切换用户
但是这里有2个不错的链接
使用REVERT子句在SQL Server中切换存储过程执行上下文
摘要:您授予用户IMPERSONATE的权限,例如说DBA,然后在之后还原
http://www.mssqltips.com/tip.asp?tip=1579
通过存储过程授予权限
摘要:我太懒了,无法阅读全部内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.