Question

Je me suis toujours demandé pourquoi la liste des rôles de base de données (db_datareader, db_datawriter, db_ddladmin, etc) n'a jamais inclus un db_storedprocedureexecutor. Les autres ont du sens, mais il semble être en mesure d'accorder la possibilité d'exécuter tous les procs stockés à un utilisateur particulier (sans les accorder db_owner, ce qui est le seul autre moyen d'accomplir la même chose) serait une chose pratique.

Par exemple, disons que je veux donner à tous mes développeurs les droits d'exécuter des procédures stockées, sans les laisser exécuter un DDL - sans accorder explicitement l'exécution sur chaque procédure stockée (puis en se souvenant d'ajouter les nouvelles lorsque des SP supplémentaires sont déployés) , il n'y a pas de moyen de le faire (je sais que SPS peut contenir DDL, donc ils peuvent toujours être indirectement autorisés à accéder à DDL de cette façon).

Si j'ai un compte de service d'application et un certain nombre de procédures stockées qui accompagnent ma demande, je dois accorder des droits explicitement à chaque SP (car je ne souhaite pas accorder mon compte de service de demande DBO), alors que je peux utiliser un rôle pour leur permettre de mettre à jour / supprimer tout ce qu'ils veulent.

Bien qu'il ait initialement semblé évident, je ne sais pas maintenant pourquoi ce rôle manque au serveur de base de données - quelqu'un peut-il expliquer pourquoi c'est une idée terrible (comme je le suppose, ou il existerait déjà)?

ÉDITER:

On dirait que je ne suis pas le seul à avoir cette attente - et Cela a fonctionné avec une poignée de T-SQL (Il semble que vous puissiez accorder une couverture à droite, ce que je ne savais pas que vous pouviez faire), ce qui me laisse juste me demander pourquoi ce n'est pas standard!

Était-ce utile?

La solution

Si vous utilisez des schémas, alors vous n'avez qu'à GRANT EXECUTE ON SCHEMA::storedprocschema

par exemple CREATE PROC storedprocschema.DoStuff ...

Quant à pourquoi, aucune idée ...

Autres conseils

Parce que si vous pouvez exécuter toutes les procédures stockées, vous pouvez exécuter sp_addrolemember, et vous pouvez faire tout ce que database_owner boîte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top