Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Managed Instance
Tento článek popisuje, jak zkontrolovat stav e-mailové zprávy odeslané pomocí databázové pošty na SQL Serveru pomocí jazyka Transact-SQL.
- Databázová pošta uchovává kopie odchozích e-mailových zpráv a zobrazuje je v zobrazeních
sysmail_allitems
,sysmail_sentitems
,sysmail_unsentitems
,sysmail_faileditems
databázemsdb
. - Externí program Databázová pošta protokoluje aktivitu a zobrazuje protokol prostřednictvím protokolu událostí aplikace systému Windows a
sysmail_event_log
zobrazení vmsdb
databázi. - E-mailové zprávy mají jeden ze čtyř možných stavů: odeslané, neodeslané, pokus odeslánía selhané.
Pokud chcete zkontrolovat stav e-mailové zprávy, spusťte dotaz na msdb.dbo.sysmail_event_log
systémové zobrazení.
Zobrazení stavu e-mailu odeslaného pomocí databázové pošty pomocí Transact-SQL
Vyberte z
sysmail_allitems
tabulky a určete pomocímailitem_id
nebosent_status
, které zprávy vás zajímají.Pokud chcete zkontrolovat stav vrácený z externího programu pro e-mailové zprávy, spojte
sysmail_allitems
ssysmail_event_log
ve sloupcimailitem_id
.Ve výchozím nastavení externí program nezapisuje informace o zprávách, které byly úspěšně odeslány. Pokud chcete protokolovat všechny zprávy, nastavte úroveň protokolování na podrobnou na stránce Konfigurovat systémové parametry Průvodce konfigurací databázové pošty .
Následující příklad uvádí informace o všech e-mailových zprávách odeslaných do danw
, které externí program nemohl úspěšně odeslat. Příkaz uvádí předmět, datum a čas, kdy se externímu programu nepodařilo odeslat zprávu, a chybovou zprávu z protokolu databázové pošty.
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