sysmail_unsentitems (Transact-SQL)
Enthält eine Zeile für jede Datenbank-E-Mail-Nachricht mit dem Status unsent oder retrying. Nachrichten mit dem Status unsent oder retrying werden in der E-Mail-Warteschlange aufbewahrt und können jederzeit gesendet werden. Nachrichten können den Status unsent aus folgenden Gründen aufweisen:
Eine neue Nachricht wurde erstellt, und obwohl sich die Nachricht in der E-Mail-Warteschlange befindet, bearbeitet die Datenbank-E-Mail zunächst andere Nachrichten und hat diese Nachricht noch nicht erreicht.
Das externe Datenbank-E-Mail-Programm wird nicht ausgeführt, und es werden keine E-Mails gesendet.
Nachrichten können den Status retrying aus folgenden Gründen aufweisen:
- Die Datenbank-E-Mail hat versucht, die E-Mail zu senden, aber der SMTP-Mailserver war nicht erreichbar. Die Datenbank-E-Mail versucht weiterhin, die Nachricht zu senden, wobei sie andere Datenbank-E-Mail-Konten verwendet, die dem Profil, von dem aus die Nachricht gesendet wurde, zugeordnet sind. Kann die E-Mail von keinem Konto aus gesendet werden, wartet die Datenbank-E-Mail die mit Wiederholungsverzögerung für das Konto als Parameter angegebene Zeit ab und versucht dann erneut, die Nachricht zu senden. Die Datenbank-E-Mail verwendet den mit Wiederholungsversuche für das Konto angegebenen Parameter, um die Anzahl der Sendungsversuche zu bestimmen. Nachrichten weisen den Status retrying so lange auf, wie die Datenbank-E-Mail versucht, die Nachricht zu senden.
Verwenden Sie diese Sicht, um anzuzeigen, wie viele Nachrichten darauf warten, gesendet zu werden, und seit wann diese sich in der E-Mail-Warteschlange befinden. Normalerweise ist die Anzahl der Nachrichten mit dem Status unsent gering. Führen Sie unter normalen Betriebsbedingungen einen Vergleichstest durch, um eine für Ihre Betriebsabläufe angemessene Anzahl von Nachrichten in der Nachrichtenwarteschlange zu ermitteln.
Verwenden Sie sysmail_allitems (Transact-SQL), um alle von der Datenbank-E-Mail verarbeiteten Nachrichten anzuzeigen. Verwenden Sie sysmail_faileditems (Transact-SQL), um nur Nachrichten mit dem Status failed anzuzeigen. Verwenden Sie sysmail_sentitems (Transact-SQL), um nur gesendete Nachrichten anzuzeigen.
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
mailitem_id |
int |
Der Bezeichner des E-Mail-Elements in der E-Mail-Warteschlange. |
profile_id |
int |
Der Bezeichner des Profils, das zum Übermitteln der Nachricht verwendet wurde. |
recipients |
varchar(max) |
Die E-Mail-Adressen der Nachrichtenempfänger. |
copy_recipients |
varchar(max) |
Die E-Mail-Adressen derer, die Kopien der Nachricht erhalten. |
blind_copy_recipients |
varchar(max) |
Die E-Mail-Adressen derer, die Kopien der Nachricht erhalten, deren Namen jedoch nicht im Nachrichtenkopf angezeigt werden. |
subject |
nvarchar(510) |
Die Betreffzeile der Nachricht. |
body |
varchar(max) |
Der Textkörper der Nachricht. |
body_format |
varchar(20) |
Das Textkörperformat der Nachricht. Mögliche Werte sind TEXT und HTML. |
importance |
varchar(6) |
Der importance-Parameter der Nachricht. |
sensitivity |
varchar(12) |
Der sensitivity-Parameter der Nachricht. |
file_attachments |
varchar(max) |
Eine durch Semikolons getrennte Liste der Dateinamen, die an die E-Mail-Nachricht angehängt wurden. |
attachment_encoding |
varchar(20) |
Der Typ der E-Mail-Anlage. |
query |
varchar(max) |
Die Abfrage, die vom E-Mail-Programm ausgeführt wurde. |
execute_query_database |
sysname |
Der Datenbankkontext, in dem das E-Mail-Programm die Abfrage ausgeführt hat. |
attach_query_result_as_file |
bit |
Bei einem Wert von 0 wurden die Abfrageergebnisse hinter dem Inhalt des Textkörpers in den Textkörper der E-Mail-Nachricht eingeschlossen. Bei einem Wert von 1 wurden die Ergebnisse als Anlage zurückgegeben. |
query_result_header |
bit |
Bei einem Wert von 1 enthielten die Abfrageergebnisse Spaltenheader. Bei einem Wert von 0 enthielten die Abfrageergebnisse keine Spaltenheader. |
query_result_width |
int |
Der query_result_width-Parameter der Nachricht. |
query_result_separator |
char(1) |
Das Zeichen, das zum Trennen der Spalten in der Abfrageausgabe verwendet wird. |
exclude_query_output |
bit |
Der exclude_query_output-Parameter der Nachricht. Weitere Informationen finden Sie unter sp_send_dbmail (Transact-SQL). |
append_query_error |
bit |
Der append_query_error-Parameter der Nachricht. 0 zeigt an, dass die Datenbank-E-Mail die Nachricht nicht senden soll, wenn die Abfrage einen Fehler enthält. |
send_request_date |
datetime |
Das Datum und die Uhrzeit, an dem bzw. zu der die Nachricht in der E-Mail-Warteschlange platziert wurde. |
send_request_user |
sysname |
Der Benutzer, der die Nachricht übermittelt hat. Hierbei handelt es sich um den Benutzerkontext der Datenbank-E-Mail-Prozedur, nicht um das Von-Feld der Nachricht. |
sent_account_id |
int |
Der Bezeichner des Datenbank-E-Mail-Kontos, das zum Senden der Nachricht verwendet wird. Für diese Sicht immer NULL. |
sent_status |
varchar(8) |
Der Status lautet unsent, wenn die Datenbank-E-Mail nicht versucht hat, die E-Mail zu senden. Wenn die Datenbank-E-Mail die Nachricht nicht senden konnte, es jedoch erneut versucht, lautet der Status retrying. |
sent_date |
datetime |
Das Datum und die Uhrzeit, an dem bzw. zu der die Datenbank-E-Mail zuletzt versucht hat, die E-Mail zu senden. Hat die Datenbank-E-Mail nicht versucht, die Nachricht zu senden, lautet der Wert NULL. |
last_mod_date |
datetime |
Das Datum und die Uhrzeit der letzten Änderung der Zeile. |
last_mod_user |
sysname |
Der Benutzer, der die Zeile zuletzt geändert hat. |
Hinweise
Wenn Sie Probleme mit der Datenbank-E-Mail behandeln, kann diese Sicht Ihnen helfen, die Ursache des Problems zu identifizieren, da sie anzeigt, wie viele Nachrichten darauf warten, gesendet zu werden, und seit wann diese Nachrichten warten. Werden keine Nachrichten gesendet, wird das externe Datenbank-E-Mail-Programm möglicherweise nicht ausgeführt, oder die Datenbank-E-Mail kann aufgrund eines Netzwerkproblems die SMTP-Server nicht erreichen. Weisen viele der ungesendeten Nachrichten dieselbe profile_id auf, deutet dies auf ein Problem mit dem SMTP-Server hin. Sie sollten eventuell dem Profil zusätzliche Konten hinzufügen. Wenn Nachrichten zwar gesendet werden, sich jedoch zu lange in der Warteschlange befinden, benötigt SQL Server möglicherweise zusätzliche Ressourcen, um das Nachrichtenvolumen zu bewältigen.
Berechtigungen
Werden der festen Serverrolle sysadmin und der Datenbankrolle DatabaseMailUserRole gewährt. Diese Sicht zeigt alle Nachrichten mit dem Status unsent oder retrying an, wenn sie von einem Mitglied der festen Serverrolle sysadmin ausgeführt wird. Für alle anderen Benutzer werden nur die von ihnen übermittelten Nachrichten mit dem Status unsent oder retryingangezeigt.