web-dev-qa-db-fra.com

GRANT EXECUTE à toutes les procédures stockées

La commande suivante donne-t-elle effectivement à l'utilisateur, "MyUser", le droit d'exécuter TOUTES les procédures stockées dans la base de données?

GRANT EXECUTE TO [MyDomain\MyUser]
133
ChadD

SQL Server 2008 et supérieur:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

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

Pour juste un utilisateur (pas un rôle):

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

SQL Server 2005 a introduit la possibilité de accorder des autorisations d'exécution de la base de données à un principe de base de données, comme vous l'avez décrit:

GRANT EXECUTE TO [MyDomain\MyUser]

Cela accordera une autorisation à la portée de la base de données, qui inclut implicitement toutes les procédures stockées dans tous les schémas. Cela signifie que vous n'êtes pas obligé d'accorder explicitement des autorisations par procédure stockée.

Vous pouvez également limiter par attribuer des autorisations d'exécution de schéma si vous souhaitez être plus précis:

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

En plus des réponses ci-dessus, j'aimerais ajouter:


Vous voudrez peut-être accorder cela à un rôle, puis attribuer le rôle au (x) utilisateur (s). Supposons que vous ayez créé un rôle myAppRights via

CREATE ROLE [myAppRights] 

alors vous pouvez donner des droits d'exécution via

GRANT EXECUTE TO [myAppRights] 

à ce rôle.


Ou, si vous voulez le faire au niveau du schéma:

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

fonctionne également (dans cet exemple, le rôle myAppRights aura des droits d’exécution sur tous les éléments du schéma dbo par la suite).

Ainsi, vous ne devez le faire qu’une seule fois et vous pouvez facilement attribuer/révoquer tous les droits d’application associés à un utilisateur si vous devez le modifier ultérieurement - ce qui est particulièrement utile si vous souhaitez créer des profils d’accès plus complexes.

Remarque: Si vous attribuez un rôle à un schéma, cela affecte également les éléments que vous aurez créés plus tard. Cela peut être avantageux ou non, selon la conception que vous souhaitez, gardez cela à l'esprit.

12
Matt