SQL Server 2016 DB Mail no se envía

17

Estoy en SQL Server 2016 y me estoy divirtiendo ... mi DB Mail no se envía y me estoy quedando sin lugares para buscar. Verifiqué dos veces los permisos de la cuenta SQL para el ejecutable de DBmail: ha leído y ejecutado. Ingresé una regla para el puerto de salida del firewall 587. Probé otra cuenta de correo y perfil con los mismos problemas no enviados. Las únicas entradas en los registros (registros de correo db) son el inicio y el final del servicio. No hay errores en ninguna parte que pueda encontrar. Parece que los correos electrónicos simplemente ingresan a la cola de envío y nunca la abandonan. Las cuentas pueden enviar y recibir correo electrónico por su cuenta y desde una instancia de SQL Server 2014 en otra máquina.

Tengo una cola de elementos con el estado enviado "no enviado" y verifiqué todos los lugares normales con resultados esperados en todos ellos, aparte de una larga cola de correo no enviado:

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

He intentado apagarlo y volverlo a encender ... ¿me perdí un DMV, etc. que podría arrojar luz sobre esta situación? ¿Es este un problema conocido con SQL Server 2016 que no tengo en mis búsquedas? ¿Algún otro paso posible para enviar este correo?

Dave
fuente
¿El perfil desde el que envía el correo electrónico es privado?
Kin Shah
Cualquier error? ¿Qué pasa con los registros? ¿Y el servidor de correo? ¿El servidor de correo recibe alguna conexión de sql? A la pregunta le falta mucha información relevante ...
Paolo
@kin No, es un correo electrónico público. Ambos correos electrónicos son de Office 365 y las cuentas se envían y reciben de SQL 2014. Se agregaron un par de detalles más al final del primer párrafo que describe la situación.
Dave
Me refería a su perfil de correo de la base de datos.
Kin Shah
¿Puede hacer ping / telnet al servidor SMTP desde su casilla SQL Server 2016? En caso afirmativo, ¿puede intentar ejecutar el script VB desde el enlace mssqltips.com/sqlservertip/1625/… para descartar cualquier problema de SMTP? Si recibe correo de prueba, puede estar seguro de que se trata de un problema con el servidor SQL.
SQLPRODDBA

Respuestas:

17

Por capricho, cuando comprobé los permisos dos veces, hice doble clic en el ejecutable real del correo DB. El resultado en la máquina SQL Server 2014 fue una ventana de comando vacía. En SQL Server 2016, al hacer clic en el ejecutable de DB Mail, se presentó este mensaje:

ingrese la descripción de la imagen aquí

No puedo encontrar este requisito en ninguna parte de la documentación de SQL Server 2016, sin embargo, es claramente un requisito. DB Mail funciona perfectamente sin más cambios que la instalación de .NET 3.5.

Dave
fuente
Tuve el mismo problema Resuelto aplicando .net 3.5.
Sir Swears-a-lot el
esto solucionó mi problema también! me estaba volviendo loco, pero la instalación de NET3.5 solucionó mi problema.
NULL.Dude
Esto solucionó el mismo problema para mí en 2016 SP1 CU8
James Anderson
¿Dónde se encuentra el ejecutable del correo DB?
JzInqXc9Dg
@Dave OH JESÚS ES ASOMBROSO. Me pregunto ... ¿usas LogMeIn en estos servidores? Hemos encontrado situaciones extrañas en las que LogMeIn desinstala o elimina cosas, y se niegan a admitirlo. El correo de mi base de datos en un momento funcionó bien en una caja y definitivamente dejó de funcionar en algún momento cuando nos mudamos a LogMeIn
John Zabroski
10

Según el soporte de Microsoft, hay un error en la instalación de SQL Server 2016 que hace que el correo de la base de datos no funcione sin .net 3.5

Hay una solución al crear un archivo DatabaseMail.exe.config en la misma carpeta donde existe el DatabaseMail.exe (carpeta Binn) escriba lo siguiente en el archivo y guárdelo con la codificación utf-8

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

Fuente: REVISIÓN: SQL Server 2016 Database Mail no funciona en una computadora que no tiene instalado .NET Framework 3.5

Jalal Shahoud
fuente
4

Echa un vistazo a esto en su lugar. De esta manera, solo necesita copiar un archivo en lugar de instalar .net 3.5. Necesita instalar CU1 primero. Consulta aquí para más detalles.

Yhagger
fuente
2
Ya existe una [Actualización acumulativa 2 para SQL Server 2016 | support.microsoft.com/en-us/kb/3182270] con [REVISIÓN: SQL Server 2016 Database Mail no funciona en una computadora que no tiene instalado .NET Framework 3.5 | support.microsoft.com/en-us/kb/3186435] .
Vladislav
1
Solo pasé 30 minutos mirando este problema antes de terminar aquí. Gracias por salvarme mucho más tiempo.
Paul
1

Además de las causas ya mencionadas, también es importante activar el perfil de correo electrónico en el nivel del Agente SQL Server como se indica aquí :

  • Haga clic con el botón derecho en Agente SQL Server> seleccione Propiedades
  • Seleccione Sistema de alerta en el panel izquierdo

  • Marca de verificación> Habilitar perfil de correo

  • Verificar el sistema de correo: Correo electrónico de base de datos
  • Verificar perfil de correo: SQLAlerts
  • Marca de verificación> Incluir cuerpo del correo electrónico en el mensaje de notificación
  • Haga clic en Aceptar.
  • Reiniciar agente.
Alexei
fuente