sp_send_dbmail 成功但有时会失败

sp_send_dbmail 成功但有时会失败

也发布在 Stack Overflow 上。任何反馈都将不胜感激。

我需要一个 SQL 作业来发送多封电子邮件,我遇到了这个错误,我无法找到任何解决方案。当我以这种方式发送电子邮件时,每次我测试时都会成功。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@subject = 'Testing';

当我向电子邮件添加查询时,偶尔作业会失败。

我提取了一个片段并简化了复制该问题的 SELECT 查询。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@query = 
'
SELECT GETDATE()
',
@subject = 'Testing';

当我运行它时,它会成功地向我发送一封包含日期时间的电子邮件,如果我再次运行代码,我会收到一般错误,但并非总是如此。

无法初始化 sqlcmd 库,错误号为 -2147467259。

我使用 SQL Server Profiler 进行了一些挖掘,发现了这个错误消息

连接已被断开,因为打开该连接的主体随后假定了新的安全上下文,然后尝试在其模拟的安全上下文下重置该连接。不支持这种情况。请参阅联机丛书中的“模拟概述”。

我目前正在使用 SA 帐户,但开始时仅具有最少的可行权限。

我尝试在通用电子邮件配置文件下运行该作业,结果相同。

运行此代码的作业会成功或失败,我找不到任何明显的原因。作业成功或失败似乎也没有规律可循。

有人遇到过这个问题并成功解决了吗?或者有人能告诉我如何解决这个问题吗?

答案1

尝试设置@query_result_header0@query_no_truncate1

@query_result_header = 1
@query_no_truncate = 0

query_result_header指定查询结果是否包含列标题。

“query_result_header” 值的类型为“bit”。当值为 1 时,查询结果包含列标题。当值为 0 时,查询结果不包含列标题。此参数默认为 1(并且仅在指定 @query 时适用)。

相关内容