Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Managed Instance
In diesem Artikel wird beschrieben, wie Sie ein Problem beheben, bei dem E-Mail-Nachrichten aus Datenbank-E-Mails erfolgreich in die Warteschlange gestellt werden, die Nachrichten jedoch nicht übermittelt werden.
Diagnostizieren des Problems
Das externe Programm "Datenbank-E-Mail" protokolliert die E-Mail-Aktivität in der msdb
Datenbank.
Um zu bestätigen, dass Datenbank-E-Mail aktiviert ist, verwenden Sie die Datenbank-Mail-XPs (Serverkonfigurationsoption) der
sp_configure
gespeicherten Systemprozedur, wie im folgenden Beispiel gezeigt:EXEC sp_configure 'show advanced', 1; RECONFIGURE; EXEC sp_configure; GO
Führen Sie dann die folgende Anweisung in der
msdb
Datenbank aus, um den Status der E-Mail-Warteschlange zu überprüfen:EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
Eine ausführliche Erläuterung der Spalten finden Sie unter sysmail_help_queue_sp (Transact-SQL).
Überprüfen Sie die
sysmail_event_log
Ansicht auf Aktivität. Die Sicht sollte einen Eintrag enthalten, der besagt, dass das externe Programm Datenbank-E-Mail gestartet wurde. Wenn es keinen Eintrag in dersysmail_event_log
Ansicht gibt, sehen Sie sich das Symptom Nachrichten in der Warteschlange, keine Einträge insysmail_event_log
an.Wenn in der
sysmail_event_log
Ansicht Fehler auftreten, beheben Sie den spezifischen Fehler. Überprüfen Sie diesysmail_allitems
Ansicht auf den Status der Nachrichten.
Meldungsstatus „unsent“
Der Status " Unsent" gibt an, dass das externe Datenbank-E-Mail-Programm die E-Mail-Nachricht noch nicht verarbeitet hat.
Das externe Programm "Datenbank-E-Mail" ist möglicherweise bei der Verarbeitung von Nachrichten zurückgefallen; Die Häufigkeit, mit der nachrichten vom externen Programm verarbeitet werden, hängt von Den Netzwerkbedingungen, dem Wiederholungstimeout, dem Nachrichtenvolumen und der Kapazität des SMTP-Servers ab. Falls das Problem weiterhin besteht, sollten Sie eventuell mehrere Profile verwenden, um die Nachrichten auf mehrere SMTP-Server zu verteilen. Überprüfen Sie die gesendete E-Mail-Last vom SQL Server, um zu überprüfen, ob die gesendeten E-Mails gültig und vorgesehen sind.
Überprüfen Sie das letzte Änderungsdatum auf erfolgreich übermittelte Nachrichten. Wenn die letzte erfolgreiche Übermittlung vor einiger Zeit aufgetreten ist, überprüfen Sie die sysmail_event_log
Ansicht, um zu überprüfen, ob das externe Programm erfolgreich von Service Broker gestartet wurde. Falls das externe Programm beim letzten Versuch nicht gestartet werden konnte, stellen Sie sicher, dass sich das externe Datenbank-E-Mail-Programm im richtigen Verzeichnis befindet und dass das Dienstkonto für SQL Server die Berechtigung zum Ausführen der ausführbaren Datei besitzt. Überprüfen Sie das Ereignisprotokoll der Windows-Anwendung auf Fehler im Zusammenhang mit Datenbank-Mail.
Hinweis
Um alte nicht gesendete Nachrichten zu löschen, warten Sie, bis die nicht zustellbaren Nachrichten die ältesten Nachrichten in der Warteschlange sind, und verwenden Sie dann die gespeicherte Systemprozedur msdb.dbo.sysmail_delete_mailitems_sp , um sie zu löschen.
Meldungsstatus „retrying“
Ein Status von "erneut versuchen" gibt an, dass Datenbank-E-Mail versucht hat, die Nachricht an den SMTP-Server zu übermitteln, dies jedoch nicht konnte. In der Regel liegt dies an einer Unterbrechung im Netzwerk, einem Fehler auf dem SMTP-Server oder einem falsch konfigurierten Datenbank-E-Mail-Konto. Die Nachricht sollte schließlich erfolgreich sein oder fehlschlagen und eine Nachricht im Ereignisprotokoll der Windows-Anwendung veröffentlichen.
Meldungsstatus „sent“
Der Status sent zeigt an, dass das externe Datenbank-E-Mail-Programm die E-Mail-Nachricht erfolgreich an den SMTP-Server übermittelt hat.
Falls die Nachricht nicht am Ziel angekommen ist, wurde die Nachricht von Datenbank-E-Mail vom SMTP-Server angenommen, konnte aber nicht an den endgültigen Empfänger übermittelt werden. Überprüfen Sie die Protokolle des SMTP-Servers, oder wenden Sie sich an den Administrator des SMTP-Servers. Sie können den SMTP-Server auch testen, indem Sie einen anderen Client (z. B. Outlook Express) verwenden.
Meldungsstatus „failed“
Der Status „failed“ zeigt an, dass das externe Datenbank-E-Mail-Programm die Nachricht nicht an den SMTP-Server übermitteln konnte.
In diesem Fall enthält die msdb.dbo.sysmail_event_log
Systemansicht die detaillierten Informationen aus dem externen Programm. Eine Beispielabfrage, die `sysmail_faileditems
` und `sysmail_event_log
` verknüpft, um detaillierte Fehlermeldungen abzurufen, finden Sie unter Überprüfen des Status von E-Mail-Nachrichten, die mit Datenbank-E-Mail gesendet wurden. Die häufigsten Ursachen für einen Fehler sind eine falsche Zieladresse oder Netzwerkprobleme, die verhindern, dass das externe Programm eines der Failoverkonten erreicht. Probleme auf dem SMTP-Server können ebenfalls dazu führen, dass der Server E-Mail ablehnt. Ändern Sie mithilfe des Assistenten zum Konfigurieren von Datenbank-E-Mail den Protokolliergrad in Ausführlich, und senden Sie eine Test-E-Mail, um den Fehlerpunkt zu lokalisieren.