Überprüfen des Status von mit Datenbank-E-Mail gesendeten E-Mail-Nachrichten
Gilt für:SQL ServerAzure SQL Managed Instance
In diesem Thema wird beschrieben, wie Sie den Status der E-Mail-Nachricht überprüfen, die mithilfe von Database Mail in SQL Server mithilfe von Transact-SQL gesendet wird.
Vorbereitungen:
So zeigen Sie den Status der mittels Datenbank-E-Mail gesendeten E-Mail mit folgender Komponente an:Transact-SQL
Vorbereitungen
Datenbank-E-Mail speichert Kopien ausgehender E-Mail-Nachrichten in den Sichten sysmail_allitems, sysmail_sentitems, sysmail_unsentitemsund sysmail_faileditems der msdb -Datenbank. Das externe Programm Datenbank-E-Mail protokolliert die Aktivität und zeigt das Protokoll über das Windows-Anwendungsereignisprotokoll und die sysmail_event_log -Sicht der msdb -Datenbank an. Führen Sie zum Prüfen des Status einer E-Mail-Nachricht eine Abfrage für diese Sicht aus. Für E-Mail-Nachrichten gibt es vier Statusmöglichkeiten: sent, unsent, retryingund failed.
Verwenden von Transact-SQL
So zeigen Sie den Status der E-Mail an, die mittels Datenbank-E-Mail gesendet wurde
Wählen Sie aus der sysmail_allitems -Tabelle aus, und geben Sie dabei die zu prüfenden Nachrichten nach mailitem_id oder sent_statusan.
Um den von dem externen Programm zurückgegebenen Status für die E-Mail-Nachricht zu prüfen, verknüpfen Sie die sysmail_allitems -Sicht mit der sysmail_event_log -Sicht auf der mailitem_id -Spalte, wie im folgenden Abschnitt gezeigt.
Standardmäßig protokolliert das externe Programm keine Informationen zu Nachrichten, die erfolgreich gesendet wurden. Um alle Nachrichten zu protokollieren, legen Sie die Protokolliergrad auf der Seite Systemparameter konfigurieren des Assistenten zum Konfigurieren von Datenbank-E-Mailauf 'Ausführlich' fest.
Beispiel (Transact-SQL)
Im folgenden Beispiel werden Informationen zu allen an danw
gesendeten E-Mail-Nachrichten aufgelistet, die das externe Programm nicht erfolgreich senden konnte. Die Anweisung listet den Betreff, Datum und Uhrzeit, zu denen das Senden der Nachricht durch das externe Programm fehlgeschlagen ist, und die Fehlermeldung des Datenbank-E-Mail-Protokolls.
USE msdb ;
GO
-- Show the subject, the time that the mail item row was last
-- modified, and the log information.
-- Join sysmail_faileditems to sysmail_event_log
-- on the mailitem_id column.
-- In the WHERE clause list items where danw was in the recipients,
-- copy_recipients, or blind_copy_recipients.
-- These are the items that would have been sent
-- to danw.
SELECT items.subject,
items.last_mod_date
,l.description FROM dbo.sysmail_faileditems as items
INNER JOIN dbo.sysmail_event_log AS l
ON items.mailitem_id = l.mailitem_id
WHERE items.recipients LIKE '%danw%'
OR items.copy_recipients LIKE '%danw%'
OR items.blind_copy_recipients LIKE '%danw%'
GO
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für