2012-09-14 51 views
7

我收到此错误:未能执行msdb.dbo.sp_send_dbmail

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'.

代码的相关部分:

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

EXEC msdb.dbo.sp_send_dbmail 
    @recipients = '[email protected]', -- Group Email 
    @subject = 'Employee Status Update', 
    @profile_name ='[email protected]', -- Setup the profile name group 
    @body = @body, 
    @body_format = 'HTML'; 
+5

错误提示您无法访问'sp_send_dbmail'存储过程。您需要将获准'EXECUTE'它 – Taryn

+1

我发现这一点:http://stackoverflow.com/questions/5569511/how-to-give-access-to-sql-server-database-mail-procedures-for-一个登录-IN-A-迪菲 –

+0

我觉得有一点点不仅仅是单独的权限包括,将张贴在这里一次,我知道得更多。感谢评论蓝。你有没有注意到我的脚本中有什么可以改进的地方? –

回答

2

格兰特sp_send_dbmail执行存储过程的执行权限给用户,或将它们添加到角色msdb.DatabaseMailUser

+0

你能告诉我在sp_send你怎么会隆重执行权限... –

+0

描述; http://msdn.microsoft.com/en-us/library/ms345484(v=sql.100).aspx –

6

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

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole' 
    ,@membername = '<user or role name>'; 
GO 
3

找到好的和简单的办法,对我here工作:

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

  1. SQL Management Studio中>管理>数据库邮件>点击右键并 选择配置...>选择管理配置文件安全> SQL管理
  2. 把检查公共选择
  3. 点击默认的配置文件,并将其设置为YES
  4. STUDIO>数据库>系统数据库>右键单击MSDB和 选择NEW QUERY>然后在sp_send_dbmail上输入> grant execute至 public,然后单击确定。