Sdílet prostřednictvím


Databázová pošta: Pošta zařazená do fronty, nedoručeno

platí pro:SQL Serverazure SQL Managed Instance

Tento článek popisuje, jak vyřešit problém, kdy se e-mailové zprávy z databázové pošty úspěšně zařadí do fronty, ale zprávy se nedoručí.

Diagnostika problému

Externí program Databázová pošta protokoluje e-mailovou msdb aktivitu v databázi.

  1. Nejprve, abyste ověřili, že je povolena databázová pošta, použijte XPs databázové pošty (volba konfigurace serveru) v rámci systémové uložené procedury, jak je uvedeno v následujícím příkladu:

    EXEC sp_configure 'show advanced', 1;  
    RECONFIGURE; 
    EXEC sp_configure; 
    GO
    
  2. Potom v databázi spusťte následující příkaz msdb , který zkontroluje stav fronty pošty:

    EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
    

    Podrobné vysvětlení sloupců najdete v tématu sysmail_help_queue_sp (Transact-SQL).

  3. sysmail_event_log Zkontrolujte aktivitu v zobrazení. Zobrazení by mělo obsahovat položku, která hlásí, že byl spuštěn externí program Databázová pošta. Pokud v sysmail_event_log zobrazení není žádná položka, zkontrolujte problém Zprávy zařazené do fronty, žádné položky v sysmail_event_log.

  4. Pokud v sysmail_event_log zobrazení dojde k chybám, vyřešte konkrétní chybu. Zkontrolujte sysmail_allitems zobrazení pro stav zpráv.

Stav zprávy: neodeslána

Stav neodeslaný znamená, že Externí program databázové pošty ještě nezpracoval e-mailovou zprávu.

Externí program Databázová pošta mohl zaostat při zpracování zpráv; rychlost, s jakou externí program zpracovává zprávy, závisí na podmínkách sítě, vypršení časového limitu opakování, objemu zpráv a kapacitě serveru SMTP. Pokud problém přetrvává, zvažte použití více než jednoho profilu k distribuci zpráv mezi více než jedním serverem SMTP. Zkontrolujte načtení odeslaných e-mailů z SQL Serveru a ověřte, že e-maily jsou platné a určené k odeslání.

Zkontrolujte nejnovější datum změny u úspěšně doručených zpráv. Pokud k poslednímu úspěšnému doručení došlo již před nějakou dobou, zkontrolujte pohled sysmail_event_log a ověřte, že Service Broker úspěšně spustil externí program. Pokud poslední pokus nespustí externí program, ověřte, že je externí program databázové pošty umístěný ve správném adresáři a že účet služby pro SQL Server má oprávnění ke spuštění spustitelného souboru. V protokolu událostí aplikace systému Windows zkontrolujte chyby související s Database Mail.

Poznámka:

Pokud chcete odstranit staré nesdělené zprávy, počkejte, až budou nepřístupné zprávy nejstaršími zprávami ve frontě, a pak je odstraňte pomocí systémové uložené procedury msdb.dbo.sysmail_delete_mailitems_sp .

Opakování stavu zprávy

Stav opakování označuje, že databázová pošta se pokusila doručit zprávu na server SMTP, ale nemohla. Příčinou je obvykle přerušení sítě, selhání serveru SMTP nebo nesprávně nakonfigurovaný účet Databázové pošty. Zpráva by měla nakonec proběhnout úspěšně nebo selhat a odeslat zprávu do protokolu událostí aplikace systému Windows.

Stav zprávy: odesláno

Stav odeslaných znamená, že externí program Databázová pošta úspěšně doručil e-mailovou zprávu na server SMTP.

Pokud zpráva nedorazí do cíle, server SMTP zprávu přijal z databázové pošty, ale zprávu nedoručil konečnému příjemci. Zkontrolujte protokoly serveru SMTP nebo se obraťte na správce serveru SMTP. Poštovní server SMTP můžete otestovat také pomocí jiného klienta, jako je Outlook Express.

Stav zprávy: neúspěšný

Stav selhání značí, že externí program Databázová pošta nemohl zprávu doručit na server SMTP.

V tomto případě msdb.dbo.sysmail_event_log systémové zobrazení obsahuje podrobné informace z externího programu. Ukázkový dotaz, který se připojuje k sysmail_faileditems a sysmail_event_log a načte podrobné chybové zprávy, najdete v tématu Kontrola stavu e-mailových zpráv odeslaných pomocí databázové pošty. Nejběžnější příčiny selhání jsou nesprávná cílová adresa nebo problémy se sítí, které brání externímu programu v dosažení jednoho nebo více účtů převzetí služeb při selhání. Problémy se serverem SMTP můžou také způsobit odmítnutí pošty. Pomocí Průvodce konfigurací databázové pošty změňte úroveň protokolování na podrobnou a odešlete testovací poštu, abyste prozkoumali bod selhání.

Další krok