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.
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).
Tags und Links sql sql-server sql-server-2005 stored-procedures tsql