我正在编写一段代码,该代码每天两次通过电子邮件发送SQL Server 2016的某些查询结果。当我从我的开发者窗口运行这段代码时,它工作得很好。当我从作业中运行它时,我得到了这个错误:
以用户: myDB\svcAGCRM2016_PRD身份执行
。无法初始化sqlcmd库,错误号为-2147467259。SQLSTATE 42000。该步骤失败。
下面是运行的代码:
declare @recipient_name varchar(500)
declare @SqlQuery varchar(max)
SET @SqlQuery='exec [myDB].[dbo].[sp_DailyRejectionRate]'
set @recipient_name = 'myemail@email.com'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SMTPProfile',
@recipients =@recipient_name,
@subject = '[INFO]'
,@query='exec [myDB].[dbo].[sp_DailyRejectionRate];
我是从一个服务帐户运行的。奇怪的是,错误中没有服务帐户的名称。实际上,我甚至找不到那个账户。在代码中,我执行exec,因为否则查询对于查询来说太长了。
运行此操作的服务帐户是SA。另外,我今天早上写了另一个查询,今天发送的邮件没有问题。
有什么想法吗?
发布于 2018-06-05 04:07:39
如果在查询字符串中显式指定用户,该怎么办?
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SMTPProfile',
@recipients =@recipient_name,
@subject = '[INFO]'
,@query='execute as user='my_sa_user' exec [myDB].[dbo].[sp_DailyRejectionRate];
https://stackoverflow.com/questions/50687362
复制相似问题