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]
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]
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]
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.