如何为不同数据库中的登录者提供对SQL Server数据库邮件程序的访问?[英] How to give access to SQL Server database mail procedures for a Login in a different database?

本文是小编为大家收集整理的关于如何为不同数据库中的登录者提供对SQL Server数据库邮件程序的访问?的处理方法,想解了如何为不同数据库中的登录者提供对SQL Server数据库邮件程序的访问?的问题怎么解决?如何为不同数据库中的登录者提供对SQL Server数据库邮件程序的访问?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我想知道如何在 SQL Server 中设置权限,以允许我的应用程序登录/角色能够使用 msdb.dbo.sp_send_dbmail 发送电子邮件.

我有一个数据库 MyDb,用户 MyUser 是角色 AppRole 的成员.我有一个调用 msdb.dbo.sp_send_dbmail 的存储过程 myProc.如果我在以 sa 身份登录时执行 myProc 一切正常,但如果我在以 MyUser 身份登录时执行我会收到错误:

<块引用>

消息 229,级别 14,状态 5,过程 sp_send_dbmail,第 1 行
对象"sp_send_dbmail"、数据库"msdb"、架构"dbo"的执行权限被拒绝.

我的数据库没有 TRUSTWORTHY ON,因此我相信我不能使用 EXECUTE AS 来模拟不同的用户,例如使用 EXECUTE AS OWNER 创建 myProc...(MSDN 参考)p>

因此,我认为我需要让我的用户也成为 msdb 中的用户,但我可以在角色级别执行此操作,还是需要让我的每个数据库用户也成为 msdb 中的用户?

我使用的数据库邮件配置文件设置为公开,所以我认为这与配置文件权限无关.

解决方案

您可以使用EXECUTE AS并签署您的程序,然后使用签名证书在msdb中授予EXECUTE权限.请参阅 调用过程在另一个数据库中从激活的程序,以及使用证书签署程序.

本文地址:https://www.itbaoku.cn/post/1793987.html