我有一个计划在服务器上运行的作业。该作业执行一个存储过程。在该存储过程中,我正在执行msdb.dbo.sp_send_dbmail。当我执行以管理员身份登录的存储过程时,它运行良好。当作业运行时,它会失败,并出现以下错误:
Executed as user: ADsql_server. Failed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000](Error 22050). The step failed.
我已经尝试在WITH EXECUTE AS OWNER
中修改存储过程和添加。当我这样做时,存储过程失败,并出现以下错误:
Executed as user: ADsql_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', 'ADsql_server'
看看这篇文章。