无法执行msdb.dbo.sp_send_dbmail

No *_*ody 15 sql sql-server

我收到此错误:

消息229,级别14,状态5,过程sp_send_dbmail,行1
对象'sp_send_dbmail',数据库'msdb',架构'dbo'上的EXECUTE权限被拒绝.

代码的相关部分:

/****** Object:  StoredProcedure [dbo].[dbo.STATUSCHANGE_EMAILALERT] ******/

EXEC msdb.dbo.sp_send_dbmail
  @recipients = 'Test@gmail.com', -- Group Email
  @subject = 'Employee Status Update',
  @profile_name ='Test@gmail.com', -- Setup the profile name group
  @body = @body,
  @body_format = 'HTML';
Run Code Online (Sandbox Code Playgroud)

sta*_*ikk 13

找到好的和简单的办法是为我工作在这里:

如果您的SQL应用程序无法使用数据库邮件发送电子邮件(我假设您已经有DBMail帐户和配置文件设置),则有两件事要设置:

  1. SQL管理工作室>管理>数据库邮件>右键单击并选择配置...>选择管理配置文件安全> SQL管理
  2. 检查PUBLIC选项
  3. 单击DEFAULT PROFILE并将其设置为YES
  4. STUDIO> DATABASES> SYSTEM DATABASES>右键单击MSDB并选择NEW QUERY>然后在sp_send_dbmail上输入> grant execute to public并单击OK


Sau*_*R S 10

要发送数据库邮件,用户必须是msdb数据库中的用户,并且是msdb数据库中DatabaseMailUserRole数据库角色的成员.要将msdb用户或组添加到此角色,请使用SQL Server Management Studio或对需要发送数据库邮件的用户或角色执行以下语句:

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = '<user or role name>';
GO
Run Code Online (Sandbox Code Playgroud)


Ale*_* K. 4

向执行存储过程的用户授予执行权限sp_send_dbmail,或将其添加到角色msdb.DatabaseMailUser