O correio do banco de dados do SQL Server 2016 não está sendo enviado

17

Estou no SQL Server 2016 e estou me divertindo muito ... meu DB Mail não está sendo enviado e estou ficando sem lugares para procurar. Eu verifiquei as permissões da conta SQL para o executável do DBmail - ele foi lido e executado. Digitei uma regra para a porta de saída do firewall 587. Tentei outra conta de correio e perfil com os mesmos problemas não enviados. As únicas entradas nos logs (logs de correio do banco de dados) estão iniciando e finalizando o serviço. Não há erros em nenhum lugar que eu possa encontrar. Os e-mails parecem simplesmente entrar na fila de envio e nunca sair dela. As contas podem enviar e receber email por conta própria e de uma instância do SQL Server 2014 em outra máquina.

Eu tenho uma fila de itens com status enviado "não enviados" e verifiquei todos os locais normais com resultados esperados em todos eles, além de uma longa fila de emails não enviados:

SELECT * FROM msdb..sysmail_event_log order by log_id DESC

SELECT * FROM dbo.sysmail_mailitems

SELECT * FROM dbo.sysmail_sentitems

USE msdb
SELECT sent_status, *
FROM sysmail_allitems

 SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';

 EXECUTE msdb.dbo.sysmail_help_status_sp

Eu tentei desligá-lo e ligá-lo novamente ... então eu perdi um DMV etc. que poderia lançar luz sobre esta situação? Esse é um problema conhecido no SQL Server 2016 que não encontrei em minhas pesquisas? Quaisquer outras etapas possíveis para receber este e-mail?

Dave
fonte
O perfil do qual você está enviando e-mail é privado?
Kin Shah
Algum erro? E os logs? E o servidor de correio? O servidor de email recebe alguma conexão do sql? A questão está faltando muita informação relevante ...
Paolo
@kin Não, é um email público. Ambos os emails são do Office 365 e as contas estão enviando e recebendo multa do SQL 2014. Adicionados mais alguns detalhes ao final do primeiro parágrafo, descrevendo a situação.
Dave
Eu quis dizer o seu perfil de email do banco de dados.
Kin Shah
Você consegue executar ping / telnet do servidor SMTP na sua caixa do SQL Server 2016? Se sim, você pode tentar executar o script VB no link mssqltips.com/sqlservertip/1625/… para descartar qualquer problema de SMTP. Se você receber email de teste, pode ter certeza de que há um problema com o SQL server.
SQLPRODDBA

Respostas:

17

Por um capricho, ao verificar as permissões, cliquei duas vezes no executável de email do DB real. O resultado na máquina do SQL Server 2014 foi uma janela de comando vazia. No SQL Server 2016, clicar no executável DB Mail apresentou esta mensagem:

insira a descrição da imagem aqui

Não consigo encontrar esse requisito em nenhum lugar da documentação do SQL Server 2016, mas é claramente um requisito. O DB Mail está funcionando perfeitamente sem outras alterações além da instalação do .NET 3.5.

Dave
fonte
Eu tive o mesmo problema. Resolvido aplicando .net 3.5.
Sir jura-a-lot
isso também corrigiu meu problema! isso estava me deixando louco, mas a instalação do NET3.5 corrigiu meu problema!
usar o seguinte comando
Isso corrigiu o mesmo problema para mim no 2016 SP1 CU8
James Anderson
onde está localizado o executável de correio do banco de dados?
JzInqXc9Dg
@ Dave OH JESUS ​​ISSO É INCRÍVEL. Apenas imaginando ... você usa o LogMeIn nesses servidores? Encontramos situações bizarras nas quais o LogMeIn desinstala ou exclui itens e eles se recusam a admitir. Meu e-mail do banco de dados em um ponto funcionou bem em uma caixa e definitivamente parou de funcionar por volta do momento em que se mudou para LogMeIn
John Zabroski
10

De acordo com o Suporte da Microsoft, há um erro na Instalação do SQL Server 2016 que faz com que o email do banco de dados não funcione sem o .net 3.5

Existe uma solução alternativa ao criar um arquivo DatabaseMail.exe.config na mesma pasta em que o DatabaseMail.exe existe (pasta Binn), grave o seguinte no arquivo e salve com a codificação utf-8

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true"> 
<supportedRuntime version="v4.0"/>     
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>

Origem: CORRECÇÃO: O SQL Server 2016 Database Mail não funciona em um computador que não possui o .NET Framework 3.5 instalado

Jalal Shahoud
fonte
4

Dê uma olhada nisso em seu lugar. Dessa forma, você só precisa copiar um arquivo em vez de instalar o .net 3.5. Precisa instalar o CU1 primeiro. Verifique aqui para mais detalhes.

Yhagger
fonte
2
Já existe uma [Atualização Cumulativa 2 para SQL Server 2016 | support.microsoft.com/en-us/kb/3182270] com [FIX: SQL Server 2016 Database Mail não funciona em um computador que não possui o .NET Framework 3.5 instalado | support.microsoft.com/en-us/kb/3186435] .
Vladislav
1
Passei apenas 30 minutos analisando esse problema antes de terminar aqui. Obrigado por me poupar muito mais tempo.
Paulo
1

Além das causas já mencionadas, também é importante ativar o perfil de email no nível do SQL Server Agent, conforme indicado aqui :

  • Clique com o botão direito do mouse em SQL Server Agent> selecione Propriedades
  • Selecione Sistema de alerta no painel esquerdo

  • Marca de verificação> Ativar perfil de email

  • Verificar sistema de correio
  • Verificar perfil de email: SQLAlerts
  • Marca de seleção> Incluir corpo de email na mensagem de notificação
  • Clique OK.
  • Reinicie o agente.
Alexei
fonte