Comment donner accès à la base de données SQL Server mail procédures pour une Connexion à une base de données différente?
Je voudrais savoir comment configurer des autorisations au sein de SQL Server pour permettre à ma demande de Login/Rôle pour être en mesure d'envoyer des e-mail à l'aide de msdb.dbo.sp_send_dbmail
.
J'ai une base de données de MyDb, un utilisateur MyUser
qui est un membre du rôle AppRole
. J'ai une procédure stockée myProc
que les appels msdb.dbo.sp_send_dbmail
. Si j'exécute myProc
connecté en tant que sa
tout cela fonctionne bien, mais si j'exécute tout en étant connecté en tant que MyUser
j'obtiens une erreur:
Msg 229, Niveau 14, État 5, Procédure sp_send_dbmail, Ligne 1
L'autorisation d'EXÉCUTION a été refusée sur l'objet "sp_send_dbmail" base de données "base de données msdb", schéma "dbo".
Ma base de données n'est pas digne de CONFIANCE, donc je crois que je ne peut pas utiliser EXÉCUTER en tant QUE pour usurper l'identité d'un autre utilisateur, par exemple, créer des myProc à EXÉCUTER en tant QUE PROPRIÉTAIRE... (Référence MSDN)
Donc je pense que j'ai besoin de faire mon utilisateur(s) également les utilisateurs dans la base de données msdb, mais ce que je peux faire au niveau de Rôle ou dois-je faire de ma base de données, les utilisateurs les utilisateurs dans la base de données msdb?
La base de données de profil de messagerie que j'utilise est fixé au public, donc je ne pense pas que ce soit lié au profil des autorisations.
OriginalL'auteur Rory | 2011-04-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser EXÉCUTER au fur et à signer votre procédure et ensuite utiliser le certificat de signature pour accorder l'autorisation d'EXÉCUTION dans
msdb
. Voir Appel d'une procédure dans une autre base de données à partir d'une procédure activé, ainsi que La signature de Procédures avec des Certificats.Je ne suis pas sûr de suivre pourquoi est-ce un problème. Ne peut pas le processus de déploiement (la MSI installation ou de Configuration) gérer l'approvisionnement de la procédure, la signature et l'octroi des autorisations nécessaires?
En théorie oui, en pratique j'ai trouvé le plus simple sera le mieux lorsque l'on traite avec une large gamme d'Administrateurs de bases de données et des environnements, donc je préfère ne pas aller en bas de la route de certificats etc.
OriginalL'auteur Remus Rusanu
Vous devriez être en mesure de simplement subvention MyUser l'accès du public à la base de données MSDB et ensuite accorder l'accès exécuter sur le sp_send_dbmail proc à cet utilisateur. Vous pouvez ajouter l'utilisateur par eux-mêmes ou d'en créer un personnalisé rôle dans la base de données MSDB et ajoutez tous les utilisateurs qui ont besoin d'exec accès à sp_send_dbmail.
OriginalL'auteur Quantum Elf
Selon microsoft vous avez juste besoin de donner aux utilisateurs l'autorisation de "la DatabaseMailUser rôle de base de données dans la base de données msdb".
Vous avez raison, ce n'était pas une très bonne réponse - toutes mes excuses.
OriginalL'auteur Tony
vous avez besoin de donner le Rôle de base de données-->databaseusermailuserRole
OriginalL'auteur arnav