自动邮件

时间:2018-06-04 19:16:16

标签: sql-server tsql

我正在编写一段代码,每天两次从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。另外,我今天早上写了另一个查询,今天发出没有问题的电子邮件。

有什么想法吗?

1 个答案:

答案 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];