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_header
to 0
e @query_no_truncate
to 1
.
@query_result_header = 1
@query_no_truncate = 0
query_result_header
especifica 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).