Wie können Sie überprüfen, ob ein Benutzer in MS SQL-Server eine gespeicherte Prozedur ausführen kann?
Ich kann überprüfen, ob der Benutzer explizite Ausführungsberechtigungen hat, indem ich mich mit der Master-Datenbank verbinde und Folgendes ausführe:
databasename..sp_helpprotect 'storedProcedureName', 'Benutzername'
Wenn der Benutzer jedoch Mitglied einer Rolle ist, die Ausführungsberechtigungen hat, wird mir sp_helprotect nicht weiterhelfen.
Idealerweise möchte ich in der Lage sein, etwas ähnliches aufzurufen wie
databasename..sp_canexecute 'storedProcedureName', 'Benutzername'
das einen bool-Wert zurückgeben würde.
0 Stimmen
Auch, wenn Sie SQL Server 2005 oder neuer verwenden und die Berechtigung dem Schema oder der Datenbank zugewiesen ist (EXECUTE kann jetzt sein), wird sp_helprotect dies nicht melden. Das gespeicherte Verfahren dient nur der Abwärtskompatibilität und meldet Berechtigungen basierend darauf, was in SQL Server 2000 vorhanden war.