0

我正在實施一些基本的SQL Server監視來監視過度阻塞。如何授予對SQL Server 2005中sysprocesses的有限訪問權限?

我有一個存儲過程,看起來像這樣:

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. 我可以授予查看服務器狀態的權限給用戶,但是這比該用戶應該有這樣更多的權限:

    GRANT VIEW SERVER STATE TO [Webserver] 
    
  2. 運行SQL作業中的過程並將結果放到Web服務器的某處,但這很麻煩和複雜。

  3. 不要嘗試從網絡服務器調用它!

我確定有更好的解決方案。有什麼建議麼?

回答

相關問題