Gibt der folgende Befehl dem Benutzer "MyUser" effektiv die Berechtigung, ALLE in der Datenbank gespeicherten Prozeduren auszuführen?
GRANT EXECUTE TO [MyDomain\MyUser]
Gibt der folgende Befehl dem Benutzer "MyUser" effektiv die Berechtigung, ALLE in der Datenbank gespeicherten Prozeduren auszuführen?
GRANT EXECUTE TO [MyDomain\MyUser]
SQL Server 2008 und höher:
/* CREATE A NEW ROLE */
CREATE ROLE db_executor
/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor
Für nur einen Benutzer (keine Rolle):
USE [DBName]
GO
GRANT EXECUTE TO [user]
user
möglicherweise in eckigen Klammern stehen müssen. Dies traf in meinem Anwendungsfall zumindest teilweise zu, weil meinem Benutzer eine Domain angehängt war (dh ein \ -Zeichen darin war). Bearbeiten: Unescaped Slash CharakterIn SQL Server 2005 wurde die Möglichkeit eingeführt , Datenbankausführungsberechtigungen für ein Datenbankprinzip zu erteilen , wie Sie beschrieben haben:
Dadurch wird die Berechtigung für den Datenbankbereich erteilt, der implizit alle gespeicherten Prozeduren in allen Schemas enthält. Dies bedeutet, dass Sie keine Berechtigungen pro gespeicherter Prozedur explizit erteilen müssen.
Sie können auch einschränken, indem Sie Schemaausführungsberechtigungen erteilen, wenn Sie detaillierter arbeiten möchten:
quelle
Zusätzlich zu den obigen Antworten möchte ich hinzufügen:
Möglicherweise möchten Sie dies stattdessen einer Rolle zuweisen und die Rolle dann den Benutzern zuweisen. Angenommen, Sie haben eine Rolle
myAppRights
über erstelltdann können Sie Ausführungsrechte über geben
zu dieser Rolle.
Oder wenn Sie dies auf Schemaebene tun möchten :
funktioniert auch (in diesem Beispiel hat die Rolle anschließend
myAppRights
Ausführungsrechte für alle Elemente des Schemasdbo
).Auf diese Weise müssen Sie dies nur einmal tun und können einem Benutzer alle zugehörigen Anwendungsrechte einfach zuweisen / widerrufen, wenn Sie dies später ändern müssen - besonders nützlich, wenn Sie komplexere Zugriffsprofile erstellen möchten.
Hinweis: Wenn Sie einem Schema eine Rolle zuweisen, wirkt sich dies auch auf Elemente aus, die Sie später erstellt haben. Dies kann je nach beabsichtigtem Design von Vorteil sein oder auch nicht. Denken Sie also daran.
quelle
GRANT EXECUTE TO [ROLLE]
Dieser hilft sicherlich
quelle