SQL Server 2016 DB Mail wird nicht gesendet

17

Ich bin auf SQL Server 2016 und habe eine tolle Zeit ... Meine DB Mail sendet nicht und mir gehen die Orte aus, an denen ich nachsehen kann. Ich habe die SQL-Kontoberechtigungen für die ausführbare Datei DBmail doppelt überprüft - sie wurde gelesen und ausgeführt. Ich habe eine Regel für den ausgehenden Firewall-Port 587 eingegeben. Ich habe versucht, ein anderes E-Mail-Konto und -Profil mit denselben nicht gesendeten Problemen zu verwenden. Die einzigen Einträge in den Protokollen (DB-Mail-Protokollen) sind Start und Ende des Dienstes. Es gibt keine Fehler, die ich finden kann. Die E-Mails scheinen einfach in die Sendewarteschlange einzutreten und sie nie zu verlassen. Die Konten können E-Mails einzeln und von einer SQL Server 2014-Instanz auf einem anderen Computer senden und empfangen.

Ich habe eine Warteschlange mit Nachrichten mit dem Status "Nicht gesendet" und alle normalen Orte mit den erwarteten Ergebnissen abgesehen von einer langen Warteschlange mit nicht gesendeten Nachrichten überprüft:

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

Ich habe versucht, es aus- und wieder einzuschalten. Habe ich also ein DMV usw. verpasst, das Licht in diese Situation bringen könnte? Ist dies ein bekanntes Problem mit SQL Server 2016, das ich bei meinen Suchen nicht berücksichtigt habe? Gibt es noch andere mögliche Schritte, um diese Mail zu verschicken?

Dave
quelle
Ist das Profil, von dem aus Sie E-Mails senden, privat?
Kin Shah
Irgendein Fehler? Was ist mit den Protokollen? Und der Mailserver? Erhält der Mailserver eine Verbindung von SQL? Der Frage fehlen viele relevante Informationen ...
Paolo
@kin Nein, es ist eine öffentliche E-Mail. Bei beiden E-Mails handelt es sich um Office 365, und die Konten senden und empfangen einwandfrei Daten aus SQL 2014. Am Ende des ersten Abschnitts wurden einige weitere Details hinzugefügt, die die Situation beschreiben.
Dave
Ich meinte Ihr Datenbank-Mail-Profil.
Kin Shah
Können Sie einen Ping- / Telnet-SMTP-Server von Ihrer SQL Server 2016-Box aus ausführen? Wenn ja, können Sie versuchen, ein VB-Skript über den Link mssqltips.com/sqlservertip/1625/… auszuführen, um SMTP- Probleme auszuschließen. Wenn Sie Testmail erhalten, können Sie sicher sein, dass es sich um ein Problem mit SQL Server handelt.
SQLPRODDBA

Antworten:

17

Aus einer Laune heraus habe ich bei der doppelten Überprüfung der Berechtigungen auf die eigentliche ausführbare DB-Mail-Datei geklickt. Das Ergebnis auf dem SQL Server 2014-Computer war ein leeres Befehlsfenster. Beim Klicken auf die ausführbare Datei von DB Mail in SQL Server 2016 wurde die folgende Meldung angezeigt:

Bildbeschreibung hier eingeben

Ich kann diese Anforderung nirgendwo in der SQL Server 2016-Dokumentation finden, sie ist jedoch eindeutig eine Anforderung. DB Mail funktioniert einwandfrei und es werden keine anderen Änderungen vorgenommen als die Installation von .NET 3.5.

Dave
quelle
Ich hatte das gleiche Problem. Gelöst durch Anwenden von .net 3.5.
Sir Swears-a-lot
das hat auch mein Problem behoben! Es hat mich verrückt gemacht, aber die Installation von NET3.5 hat mein Problem behoben!
NULL.Dude
Dies behebt das gleiche Problem für mich auf 2016 SP1 CU8
James Anderson
Wo befindet sich die ausführbare DB-Mail-Datei?
JzInqXc9Dg
@ Dave OH JESUS ​​DAS IST ERSTAUNLICH. Ich frage mich nur ... verwenden Sie LogMeIn auf diesen Servern? Wir haben bizarre Situationen erlebt, in denen LogMeIn Inhalte deinstalliert oder löscht und diese nicht zulassen. Meine Datenbank-E-Mails funktionierten zu einem bestimmten Zeitpunkt auf einer Box
einwandfrei
10

Laut Microsoft Support gibt es einen Fehler im SQL Server 2016-Setup, der dazu führt, dass die Datenbank-E-Mail ohne .NET 3.5 nicht funktioniert

Es gibt eine Problemumgehung, wenn Sie eine DatabaseMail.exe.config- Datei in demselben Ordner erstellen, in dem sich die DatabaseMail.exe befindet (Binn-Ordner). Schreiben Sie Folgendes in die Datei und speichern Sie sie mit der UTF-8-Codierung

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

Quelle: UPDATE: SQL Server 2016 Database Mail funktioniert nicht auf einem Computer, auf dem .NET Framework 3.5 nicht installiert ist

Jalal Shahoud
quelle
4

Schauen Sie sich das stattdessen an. Auf diese Weise müssen Sie nur eine Datei kopieren, anstatt .net 3.5 zu installieren. Zuerst muss CU1 installiert werden. Überprüfen Sie hier für weitere Details.

Yhagger
quelle
2
Es gibt bereits ein [Kumulatives Update 2 für SQL Server 2016 | support.microsoft.com/de-de/kb/3182270] mit [UPDATE: SQL Server 2016-Datenbankmail funktioniert nicht auf einem Computer, auf dem .NET Framework 3.5 nicht installiert ist support.microsoft.com/en-us/kb/3186435] .
Vladislav
1
Wir haben uns nur 30 Minuten mit diesem Problem beschäftigt, bevor wir hier gelandet sind. Vielen Dank, dass Sie mir viel mehr Zeit gespart haben.
Paul
1

Neben bereits genannten Ursachen, um es zu aktivieren E-Mail - Profil auf SQL Server - Agent - Ebene ist auch wichtig , wie angegeben hier :

  • Klicken Sie mit der rechten Maustaste auf SQL Server-Agent, und wählen Sie Eigenschaften aus
  • Wählen Sie im linken Bereich Alarmsystem

  • Häkchen> E-Mail-Profil aktivieren

  • Überprüfen Sie das Mail-System: Datenbank-Mail
  • E-Mail-Profil überprüfen: SQLAlerts
  • Häkchen> Textkörper der E-Mail in die Benachrichtigungsnachricht aufnehmen
  • OK klicken.
  • Starten Sie den Agenten neu.
Alexei
quelle