Udostępnij za pośrednictwem


Jak Sprawdź stan wiadomości E-Mail wysyłane pocztą bazy danych (Transact-SQL)

Poczta bazy danych przechowuje kopie wychodzących wiadomości e-mail i wyświetla je w sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditems widoki msdb bazy danych.Zewnętrzny program poczty bazy danych Dzienniki aktywności i wyświetla dziennika za pomocą dziennika zdarzeń aplikacji systemu Windows i sysmail_event_log przeglądać w msdb bazy danych.Aby sprawdzić stan wiadomości e-mail, uruchamiając kwerendę dotyczącą tego widoku.Wiadomości e-mail mają jeden z czterech możliwych stanów: wysyłane, Niewysłane, Ponawianie, i nie powiodło się.

Aby sprawdzić stan wiadomości e-mail

  1. Wybierz jedną z sysmail_allitems tabela określenie wiadomości odsetek przez mailitem_id lub sent_status.

  2. Aby sprawdzić stan łączyć zwrócił zewnętrzny program poczty e-mail, sysmail_allitems do sysmail_event_log wyświetlanie na mailitem_id kolumna, jak pokazano w poniższej sekcji.

Ostrzeżenie

Domyślnie zewnętrzny program nie rejestruje informacje o wiadomości, które zostały pomyślnie wysłane.Aby logować wszystkie komunikaty zestaw poziom rejestrowania na pełne korzystanie z Konfigurowanie parametrów systemu strona Kreatora konfiguracji poczty bazy danych.

Przykład

Poniższy przykład wyświetla informacje na temat wszelkich wiadomości e-mail wysyłane do danw , zewnętrzny program nie może wysłać pomyślnie.Instrukcja wyświetla temat, Data i czas że zewnętrzny program nie może wysłać wiadomość i komunikat o błędzie z dziennika bazy danych poczty.

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