SQL Server 数据库邮件 - 为什么我不能对 xp_sysmail_activate 运行执行?

Som*_*Guy 5 sql-server configuration database-mail

SQL Server 2008 R2 标准 x64

我无法从这个 SQL Server 发送电子邮件(在许多配置几乎完全相同的 AFAIK 中)。我已经创建了邮件配置文件和帐户。但是,每当我尝试使用 sp_send_dbmail(使用我的帐户 - 在系统管理员角色中)或数据库邮件->“发送测试电子邮件”发送电子邮件时,都没有任何反应。sysmail_log 中没有任何内容。生成以下 SQL Server 错误:

 The activated proc '[dbo].[sp_sysmail_activate]' running on queue 'msdb.dbo.ExternalMailQueue' output the following:  'The EXECUTE permission was denied on the object 'xp_sysmail_activate', database 'mssqlsystemresource', schema 'sys'.'
Run Code Online (Sandbox Code Playgroud)

细节

  • msdb.dbo.sysmail_mailitems 有每封邮件的记录
  • 数据库邮件日志为空(msdb.dbo.sysmail_log)
  • msdb.dbo.sysmail_sentitems 为空
  • 我已经运行了 sysmail_stop_sp 和 sysmail_start_sp
  • “is_broker_enabled”在 msdb 中设置为“1”

当我是 sysadmin 角色的一部分时,执行权限如何被拒绝?关于可能发生什么的任何建议?

mrd*_*nny 1

您不是收到错误的人,而是激活的存储过程。该过程在与您不同的帐户下运行。

默认情况下,该过程将按照设置为 msdb 数据库 dbo 的帐户运行,当然,除非有人更改它。最好的猜测是 msdb 数据库的 dbo 帐户不是 sysadmin 固定服务器角色的成员,或者该队列的激活主体已更改(查询 sys.service_queues 将告诉您这一点)。