MS SQL Server: Überprüfen Sie, ob ein Benutzer eine gespeicherte Prozedur ausführen kann

8

Wie können Sie überprüfen, ob ein Benutzer eine gespeicherte Prozedur in MS SQL Server ausführen kann?

Ich kann sehen, ob der Benutzer explizite Ausführungsberechtigungen hat, indem er sich mit der master-Datenbank verbindet und ausführt:

%Vor%

Wenn der Benutzer jedoch Mitglied einer Rolle mit Ausführungsberechtigungen ist, hilft mir sp_helprotect nicht.

Idealerweise würde ich gerne etwas wie

nennen können %Vor%

was ein bool zurückgeben würde.

    
Andrew 27.01.2009, 16:40
quelle

3 Antworten

13
Cade Roux 27.01.2009, 16:43
quelle
4

Versuchen Sie etwas wie folgt:

%Vor%     
Dane 27.01.2009 20:56
quelle
1

Angenommen, der SP führt nur eine SELECT-Anweisung aus:

  

EXECUTE AS USER = [Benutzername / Login]
  EXEC sp_foobar (sna, fu)
  REVERT

Beachten Sie, dass Sie den REVERT-Befehl nach der Eingabeaufforderung ausführen müssen, da SQL Server Sie als den Benutzer EXECUTING AS betrachtet, bis Sie entweder die Verbindung herunterfahren oder den Identitätswechsel REVERT durchführen. Das heißt, Sie sollten genau sehen, was ein Benutzer bekommen würde (einige Zeilen bekommen, aber nicht alle? Das sollte Ihnen helfen).

    
Pulsehead 27.01.2009 19:06
quelle