我正在實施一些基本的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服務器)的上下文中執行此操作時,無論真實答案如何,我都會得到零。
我能想到的幾個解決方案,但我不開心的任何人:
我可以授予查看服務器狀態的權限給用戶,但是這比該用戶應該有這樣更多的權限:
GRANT VIEW SERVER STATE TO [Webserver]
運行SQL作業中的過程並將結果放到Web服務器的某處,但這很麻煩和複雜。
- 不要嘗試從網絡服務器調用它!
我確定有更好的解決方案。有什麼建議麼?