sp_send_dbmail tendo sucesso, mas às vezes falhando

sp_send_dbmail tendo sucesso, mas às vezes falhando

Também postado em Stack Overflow. Qualquer feedback seria muito apreciado.

Preciso de um trabalho SQL para enviar vários e-mails e me deparei com esse erro para o qual não consigo encontrar nenhuma solução. Quando envio e-mails desta forma, é bem-sucedido sempre que faço testes.

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

Quando adiciono uma consulta ao e-mail, ocasionalmente, o trabalho falhará.

Retirei um trecho e simplifiquei a consulta SELECT que replica o problema.

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

Quando executo isso, ele me envia um e-mail com a data e hora. Se eu executar o código novamente, recebo o erro genérico, mas nem sempre.

Falha ao inicializar a biblioteca sqlcmd com número de erro -2147467259.

Fiz algumas pesquisas com o SQL Server Profiler e me deparei com esta mensagem de erro

A conexão foi interrompida porque a entidade de segurança que a abriu assumiu posteriormente um novo contexto de segurança e, em seguida, tentou redefinir a conexão em seu contexto de segurança representado. Este cenário não é suportado. Consulte "Visão geral da representação" nos livros on-line.

Atualmente estou usando uma conta SA, mas comecei com privilégios mínimos viáveis.

Tentei executar o trabalho no perfil de e-mail genérico, com os mesmos resultados.

O trabalho que executa esse código será bem-sucedido e falhará sem nenhum motivo aparente que eu possa encontrar. Não parece haver um padrão para o trabalho ser executado com êxito ou não.

Alguém já se deparou com esse problema e conseguiu resolvê-lo? Ou alguém é capaz de me indicar uma direção para resolver isso?

Responder1

Tente configurar @query_result_headerto 0e @query_no_truncateto 1.

@query_result_header = 1
@query_no_truncate = 0

query_result_headerespecifica se os resultados da consulta incluem cabeçalhos de coluna.

O valor ´query_result_header´ é do tipo "bit". Quando o valor é 1, os resultados da consulta contêm cabeçalhos de coluna. Quando o valor é 0, os resultados da consulta não incluem cabeçalhos de colunas. Este parâmetro tem como padrão 1 (e só é aplicável se @query for especificado).

informação relacionada