我有一个在托管服务帐户下运行的SQL Server 2012实例。我已经使用一个帐户配置了数据库邮件,并尝试发送测试电子邮件,但是服务器的事件日志中出现了一些错误:
数据库引擎实例= MYINSTANCE;邮件PID = 2132;错误消息:对数据库的更新失败。原因:对对象'sysmail_logmailevent_sp',数据库'msdb',模式'dbo'的EXECUTE权限被拒绝。
数据库引擎实例= MYINSTANCE;邮件PID = 2212; 异常类型:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException消息:数据库读取失败。原因:对对象'sp_readrequest',数据库'msdb',模式'dbo'的EXECUTE权限被拒绝。数据:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)帮助链接:NULL来源:DatabaseMailEngine
如果我使运行SQL Server的帐户成为sysadmin,则该错误消失,邮件成功发送。但是,我所做的所有研究都表明,赋予此帐户数据库DatabaseMailUserRole
角色msdb
应该足够。我这样做了,仍然收到相同的错误。
我在BOL中查看了一下,但找不到任何东西。