MS SQL Server: Prüfen Sie, ob ein Benutzer eine gespeicherte Prozedur ausführen kann
Wie können Sie überprüfen, um zu sehen, ob ein Benutzer ausführen kann, eine gespeicherte Prozedur in MS SQL server?
Ich sehen kann, wenn der Benutzer explizit die execute-Berechtigungen eine Verbindung mit der master-Datenbank und ausführen:
databasename..sp_helpprotect 'storedProcedureName', 'username'
jedoch, wenn der Benutzer Mitglied einer Rolle mit Berechtigungen ausführen sp_helprotect nicht mir helfen.
Im Idealfall würde ich mag in der Lage sein zu nennen, so etwas wie
databasename..sp_canexecute 'storedProcedureName', 'username'
was wieder ein bool.
- Auch, wenn Sie mithilfe von SQL Server 2005 oder höher, und die Berechtigung zugewiesen ist, um das schema oder die Datenbank (AUSZUFÜHREN, kann jetzt sein), sp_helprotect nicht melden. Die gespeicherte Prozedur enthalten ist nur für die Abwärtskompatibilität und Berichte, Berechtigungen basierend auf was wurde in SQL Server 2000.
Du musst angemeldet sein, um einen Kommentar abzugeben.
fn_my_permissions
undHAS_PERMS_BY_NAME
Probieren Sie etwas wie dieses:
Vorausgesetzt, der SP läuft nur eine SELECT-Anweisung:
Es ist wichtig zu beachten, dass Sie benötigen, um führen Sie den Befehl "ZURÜCKSETZEN" nach der Eingabeaufforderung SQL-Server sehen Sie, wie der Benutzer Sie AUSGEFÜHRT, bis Sie entweder Herunterfahren die Verbindung oder das ZURÜCKSETZEN der Identitätswechsel. Das heißt, Sie sollten sehen, genau das, was ein Benutzer bekommen würde (immer einige Zeilen, aber nicht alle? Dies sollte Ihnen helfen, aus).