it-swarm.com.de

GRANT EXECUTE für alle gespeicherten Prozeduren

Erteilt der folgende Befehl dem Benutzer "MyUser" die Berechtigung, ALLE gespeicherten Prozeduren in der Datenbank auszuführen?

GRANT EXECUTE TO [MyDomain\MyUser]
133
ChadD

SQL Server 2008 und höher:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor

Nur für einen Benutzer (keine Rolle):

USE [DBName]
GO
GRANT EXECUTE TO [user]
213
Antony Scott

In SQL Server 2005 wurde die Möglichkeit eingeführt, einem Datenbankprinzip Erteilen von Datenbank-Ausführungsberechtigungen zuzuweisen, wie Sie beschrieben haben:

GRANT EXECUTE TO [MyDomain\MyUser]

Dadurch wird die Berechtigung für den Datenbankbereich erteilt, der implizit alle gespeicherten Prozeduren in allen Schemas enthält. Dies bedeutet, dass Sie Berechtigungen nicht explizit pro gespeicherter Prozedur erteilen müssen.

Sie können auch einschränken durch Erteilen von Schema-Ausführungsberechtigungen wenn Sie detaillierter sein möchten:

GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
66
Robin Minto

Zusätzlich zu den obigen Antworten möchte ich hinzufügen:


Sie können dies stattdessen einer Rolle zuweisen und die Rolle dann den Benutzern zuweisen. Angenommen, Sie haben eine Rolle myAppRights über erstellt

CREATE ROLE [myAppRights] 

dann können Sie Ausführungsrechte vergeben über

GRANT EXECUTE TO [myAppRights] 

zu dieser Rolle.


Oder, wenn Sie es tun möchten auf Schemaebene:

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

funktioniert auch (in diesem Beispiel hat die Rolle myAppRights anschließend Ausführungsrechte für alle Elemente des Schemas dbo).

Auf diese Weise müssen Sie dies nur einmal tun und können einem Benutzer alle zugehörigen Anwendungsrechte einfach zuweisen/entziehen, 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 vorteilhaft sein oder auch nicht. Beachten Sie dies.

12
Matt