我正在编写一段代码,每天两次从SQL Server 2016向我发送一些查询的结果。当我从开发人员窗口运行这段代码时,它运行正常。当我从工作中运行它时,我收到了这个错误:
以用户身份执行:myDB \ svcAGCRM2016_PRD。无法初始化sqlcmd 库,错误号为-2147467259。 [SQLSTATE 42000](错误22050)。 步骤失败了。
这是运行的代码:
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。另外,我今天早上写了另一个查询,今天发出没有问题的电子邮件。
有什么想法吗?
答案 0 :(得分:0)
如果您在查询字符串中明确指定用户该怎么办?
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];