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 и наткнулся на это сообщение об ошибке

Соединение было разорвано, поскольку открывший его принципал впоследствии принял новый контекст безопасности, а затем попытался сбросить соединение в своем олицетворенном контексте безопасности. Этот сценарий не поддерживается. См. «Обзор олицетворения» в Books Online.

В настоящее время я использую учетную запись SA, но начал с минимально необходимых привилегий.

Я попробовал запустить задание под общим профилем электронной почты, но результат тот же.

Задание, которое запускает этот код, будет успешно и неудачно выполнено без какой-либо видимой причины, которую я могу найти. Кажется, нет никакой закономерности в том, что задание выполняется успешно или нет.

Кто-нибудь сталкивался с этой проблемой и смог ее решить? Или кто-нибудь может указать мне направление для решения этой проблемы?

решение1

Попробуйте установить @query_result_headerзначения 0и @query_no_truncate.1

@query_result_header = 1
@query_no_truncate = 0

query_result_headerуказывает, включают ли результаты запроса заголовки столбцов.

Значение ´query_result_header´ имеет тип "bit". Если значение равно 1, результаты запроса содержат заголовки столбцов. Если значение равно 0, результаты запроса не включают заголовки столбцов. Этот параметр по умолчанию равен 1 (и применим только если указан @query).

Связанный контент