Je suis en train d'implémenter une surveillance SQL Server rudimentaire pour surveiller un blocage excessif.Comment accorder un accès limité à sysprocesses dans SQL Server 2005?
J'ai une procédure stockée qui ressemble à ceci:
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
Lorsque j'exécute ce dans un contexte d'administrateur, je reçois la réponse correcte. Lorsque j'exécute ceci dans le contexte d'un utilisateur avec des privilèges limités (c'est-à-dire le serveur web), je reçois zéro indépendamment de la vraie réponse.
Je peux penser à quelques solutions mais je ne suis pas heureux l'un d'eux:
Je peux accorder des privilèges d'ÉTAT VUE DU SERVEUR à l'utilisateur, mais qui est beaucoup plus de permissions que cet utilisateur doit avoir:
Exécutez le proc à partir d'un travail SQL et placez les résultats quelque part pour le serveur Web à ramasser, mais c'est compliqué et compliqué. N'essayez pas de l'appeler depuis le serveur Web!
Je suis sûr qu'il existe une meilleure solution. Aucune suggestion?