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 den Status der E-Mail-Nachricht überprüfen, die mithilfe von Database Mail in SQL Server mithilfe von Transact-SQL gesendet wurde.
- Datenbank-E-Mail behält Kopien ausgehender E-Mail-Nachrichten bei und zeigt sie in den
sysmail_allitems
,sysmail_sentitems
,sysmail_unsentitems
,sysmail_faileditems
Ansichten dermsdb
-Datenbank an. - Das externe Datenbank-Mail-Programm protokolliert die Aktivität und zeigt das Protokoll über das Windows-Anwendungsereignisprotokoll und die
sysmail_event_log
Ansicht in dermsdb
Datenbank an. - Für E-Mail-Nachrichten gibt es vier Statusmöglichkeiten: sent, unsent, retryingund failed.
Um den Status einer E-Mail-Nachricht zu überprüfen, führen Sie eine Abfrage für die msdb.dbo.sysmail_event_log
Systemansicht aus.
Verwenden sie Transact-SQL, um den Status der E-Mail anzuzeigen, die mit Datenbank-E-Mail gesendet wurde.
Wählen Sie aus der
sysmail_allitems
Tabelle aus, indem Sie die interessanten Nachrichten nachmailitem_id
odersent_status
angeben.Um den vom externen Programm zurückgegebenen Status für die E-Mail-Nachrichten zu überprüfen, fügen Sie
sysmail_allitems
der Ansicht auf dersysmail_event_log
-Spalte hinzu, die zumailitem_id
gehört.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.
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