繁体   English   中英

如何在SQL Server 2005中授予对sysprocesses的有限访问权限?

[英]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服务器)的上下文中执行此操作时,无论真实答案如何,我都会得到零。

我可以想到一些解决方案,但我对其中任何一个都不满意:

  1. 我可以向该用户授予VIEW SERVER STATE特权,但这比该用户应具有的权限更多:

     GRANT VIEW SERVER STATE TO [Webserver] 
  2. 从SQL作业运行proc,并将结果放在Web服务器可以获取的地方,但这很麻烦而且很复杂。

  3. 不要尝试从网络服务器上调用它!

我敢肯定有更好的解决方案。 有什么建议么?

我很高兴我不知道第一手的答案:)但是我玩过EXECUTE AS和REVERT来切换用户

但是这里有2个不错的链接

使用REVERT子句在SQL Server中切换存储过程执行上下文

摘要:您授予用户IMPERSONATE的权限,例如说DBA,然后在之后还原

http://www.mssqltips.com/tip.asp?tip=1579

通过存储过程授予权限

摘要:我太懒了,无法阅读全部内容

http://www.sommarskog.se/grantperm.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM