为什么我不能从正在作业中执行的存储过程中执行 msdb.dbo.send_dbmail?
Why can't I execute msdb.dbo.send_dbmail from a stored procedure being executed in a job?
我在我的服务器上安排了一项工作 运行。该作业执行一个存储过程。在该存储过程中,我正在执行 msdb.dbo.sp_send_dbmail。当我执行以管理员身份登录的存储过程时,它 运行 没问题。但是,当作业 运行s 时,它失败并出现以下错误:
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 的作业中执行存储过程?
很遗憾,WITH EXECUTE AS OWNER
无法解决您的问题。
您可能需要将用户添加为内置数据库邮件角色的一部分,例如:
USE msdb;
EXEC sp_addrolemember 'DatabaseMailUserRole', 'AD\sql_server'
查看 this post。
我在我的服务器上安排了一项工作 运行。该作业执行一个存储过程。在该存储过程中,我正在执行 msdb.dbo.sp_send_dbmail。当我执行以管理员身份登录的存储过程时,它 运行 没问题。但是,当作业 运行s 时,它失败并出现以下错误:
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 的作业中执行存储过程?
很遗憾,WITH EXECUTE AS OWNER
无法解决您的问题。
您可能需要将用户添加为内置数据库邮件角色的一部分,例如:
USE msdb;
EXEC sp_addrolemember 'DatabaseMailUserRole', 'AD\sql_server'
查看 this post。