我已经创建了一个帐户并将服务器角色分配为公共。将数据库 mydb 上的用户映射分配为 dbo,并将 msdb 上的用户映射分配为 dbo。
使用 msdb 上的用户映射设置,我检查了以下角色:
DatabaseMailUserRole
db_owner
public
然后我的应用程序使用此帐户登录并尝试使用数据库邮件配置文件发送电子邮件。我得到了错误:
System.Data.SqlClient.SqlException: The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
如果我将服务器角色 sysadmin 分配给此帐户。然后它工作正常。
但我不想将系统管理员分配给这个帐户。如何解决这个问题?
奇怪的是我也在测试服务器上尝试过。该帐户甚至不在 msdb 上的 DatabaseMailUserRole 中,它工作正常。
2 sql 服务器盒的唯一区别是 SMTP 身份验证设置:
在测试盒上,设置为“基本身份验证”
在生产盒上,设置为“使用数据库引擎服务凭据的 Windows 身份验证”
嗨桥。谢谢。运行 EXEC msdb.dbo.sysmail_help_principalprofile_sp 并在生产中获得以下信息:
principal_id principal_name profile_id profile_name is_default
11 guest 1 sqlservice 0
12 mydomainaccount 1 sqlservice 0
在分期,没有结果。