我想知道如何在SQL Server中设置权限以允许我的应用程序登录/角色能够使用msdb.dbo.sp_send_dbmail
发送电子邮件。如何为不同数据库中的登录提供对SQL Server数据库邮件过程的访问?
我有一个数据库MyDb,用户MyUser
谁是角色AppRole
的成员。我有一个存储过程myProc
,它调用msdb.dbo.sp_send_dbmail
。如果我执行myProc
登录的同时sa
这一切工作正常,但如果我执行登录的同时MyUser
我得到一个错误:
Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
我的数据库没有可信赖ON,因此,我认为我可以” t使用EXECUTE AS模拟不同的用户,例如使用EXECUTE AS OWNER创建myProc ...(MSDN reference)
因此,我认为我需要让我的用户也是msdb中的用户,但是我可以在角色级别执行此操作还是需要将每个我的数据库用户也在msdb中的用户?
我使用的数据库邮件配置文件设置为公共,所以我不认为这与配置文件权限有关。
我结束了刚刚创建我的用户为MSDB内的用户。为了简单起见,我不想使用@Remus Rusanu的证书建议,尽管在diff环境中这可能是一个不错的选择。如果你有很多数据库用户,可以使用EXECUTE AS来模拟一个数据库用户,然后给这个用户访问msdb--我不需要查看这个选项。 – Rory 2011-04-29 16:10:23