【问题标题】:Why can't I execute msdb.dbo.send_dbmail from a stored procedure being executed in a job?为什么我不能从作业中执行的存储过程执行 msdb.dbo.send_dbmail?
【发布时间】:2015-12-10 15:13:49
【问题描述】:

我有一个作业计划在我的服务器上运行。该作业执行一个存储过程。在该存储过程中,我正在执行 msdb.dbo.sp_send_dbmail。当我执行以管理员身份登录的存储过程时,它运行良好。但是,当作业运行时,它会失败并出现以下错误:

Executed as user: AD\sql_server. Failed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000](Error 22050). The step failed.

我尝试修改存储过程并添加WITH EXECUTE AS OWNER。当我这样做时,存储过程失败并出现以下错误:

Executed as user: AD\sql_server. The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'. [SQLSTATE 42000](Error 229). The step failed.

我需要做什么才能在执行 msdb.dbo.sp_send_dbmail 的作业中执行存储过程?

【问题讨论】:

    标签: stored-procedures sql-server-2014 sql-server-agent sp-send-dbmail sql-job


    【解决方案1】:

    很遗憾,WITH EXECUTE AS OWNER 无法解决您的问题。

    您可能需要将用户添加为内置数据库邮件角色的一部分,例如:

    USE msdb;
    EXEC sp_addrolemember 'DatabaseMailUserRole', 'AD\sql_server'
    

    查看this post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      相关资源
      最近更新 更多