Stored procedures 为什么可以';我是否从作业中正在执行的存储过程中执行msdb.dbo.send_dbmail?

Stored procedures 为什么可以';我是否从作业中正在执行的存储过程中执行msdb.dbo.send_dbmail?,stored-procedures,sql-server-2014,sql-server-agent,sp-send-dbmail,sql-job,Stored Procedures,Sql Server 2014,Sql Server Agent,Sp Send Dbmail,Sql Job,我有一个作业计划在我的服务器上运行。该作业执行一个存储过程。在该存储过程中,我正在执行msdb.dbo.sp_send_dbmail。当我执行以管理员身份登录的存储过程时,它运行良好。但当作业运行时,它会失败,并出现以下错误: 以用户身份执行:AD\sql\u服务器。无法初始化sqlcmd库,错误号为-2147467259。[SQLSTATE 42000](错误22050)。该步骤失败。 我尝试过修改存储过程,并使用EXECUTE AS OWNER添加。执行此操作时,存储过程将失败,并出现以下错

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

以用户身份执行:AD\sql\u服务器。无法初始化sqlcmd库,错误号为-2147467259。[SQLSTATE 42000](错误22050)。该步骤失败。

我尝试过修改存储过程,并使用EXECUTE AS OWNER添加
。执行此操作时,存储过程将失败,并出现以下错误:

以用户身份执行:AD\sql\u服务器。对对象“sp_send_dbmail”、数据库“msdb”、架构“dbo”的执行权限被拒绝。[SQLSTATE 42000](错误229)。该步骤失败。


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

不幸的是,以所有者身份执行的
无法解决您的问题

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

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