Wie kann ich nur begrenzten Zugang zu sysprocesses in SQL Server 2005 erteilen?

stimmen
0

Ich bin die Umsetzung einig rudimentären SQL Server-Monitoring für übermäßige Blockierung zu beobachten.

Ich habe eine gespeicherte Prozedur, die wie folgt aussieht:

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

Als ich dies in einem Administrator Kontext auszuführen, erhalte ich die richtige Antwort. Als ich dies im Kontext eines Benutzers mit eingeschränkten Rechten (dh der Webserver) ausführen, bekomme ich null unabhängig von der wahren Antwort.

Ich kann von ein paar Lösungen denken, aber ich bin nicht einer von ihnen glücklich:

  1. Ich kann die VIEW SERVER STATE-Privilegien für den Benutzer gewähren, aber das ist viel mehr Berechtigung als dieser Benutzer haben sollte:

    GRANT VIEW SERVER STATE TO [Webserver]
    
  2. Führen Sie das proc aus einem SQL-Job und legt die irgendwo Ergebnisse für den Webserver zu holen, aber das ist chaotisch und kompliziert.

  3. versuchen, und rufen Sie das nicht vom Webserver!

Ich bin sicher, es gibt eine bessere Lösung. Irgendwelche Vorschläge?

Veröffentlicht am 09/12/2008 um 20:59
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich bin froh, dass ich weiß nicht, die Antworten aus erster Hand :) aber ich habe gespielt mit AS EXECUTE und REVERT zwischen Benutzern wechseln

Aber hier sind zwei gute Verbindungen mit zu beginnen

Schalt Stored Procedure Ausführungskontext in SQL Server unter Verwendung der Klausel REVERT

Zusammenfassung: erteilen Sie Benutzer zu verkörpern als DBA sagen, dann wieder zurück nach

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

Geben Berechtigungen durch Stored Procedures

Zusammenfassung: Ich bin zu faul, um ganze Sache zu lesen

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

Beantwortet am 09/12/2008 um 21:21
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more