Также опубликовано в 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).