我想知道如何在 SQL Server 中设置权限,以允许我的应用程序登录/角色能够使用发送电子邮件msdb.dbo.sp_send_dbmail
.
我有一个数据库MyDb,一个用户MyUser
谁是角色的成员AppRole
。我有一个存储过程myProc
那个叫msdb.dbo.sp_send_dbmail
。如果我执行myProc
登录时sa
一切正常,但如果我在登录时执行MyUser
我收到错误:
消息 229,级别 14,状态 5,过程 sp_send_dbmail,第 1 行
对对象“sp_send_dbmail”、数据库“msdb”、架构“dbo”的 EXECUTE 权限被拒绝。
我的数据库没有 TRUSTWORTHY ON,因此我相信我can't使用 EXECUTE AS 模拟不同的用户,例如使用 EXECUTE AS OWNER 创建 myProc...(MSDN 参考 http://msdn.microsoft.com/en-us/library/ms188304.aspx)
因此,我认为我需要使我的用户也是 msdb 中的用户,但是我可以在角色级别执行此操作,还是需要使我的每个数据库用户也是 msdb 中的用户?
我正在使用的数据库邮件配置文件设置为公共,因此我认为这与配置文件权限无关。
您可以使用 EXECUTE AS 并对您的过程进行签名,然后使用签名证书授予 EXECUTE 权限msdb
. See 从激活的过程调用另一个数据库中的过程 http://rusanu.com/2006/03/07/call-a-procedure-in-another-database-from-an-activated-procedure/, 也证书签署程序 http://www.sommarskog.se/grantperm.html#Certificates.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)