Megosztás a következőn keresztül:


Ellenőrizze az adatbázispostal küldött e-mailek állapotát

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példány

Ez a cikk azt ismerteti, hogyan ellenőrizheti a Database Mail használatával az SQL Serveren a Transact-SQL használatával küldött e-mail állapotát.

  • A Database Mail megőrzi a kimenő e-mailek másolatait, és megjeleníti azokat az sysmail_allitemssysmail_sentitems adatbázis , sysmail_unsentitems, sysmail_faileditemsmsdb nézeteiben.
  • A Database Mail külső program naplózza a tevékenységet, és megjeleníti a naplót a Windows alkalmazás eseménynaplójában és az sysmail_event_logmsdb adatbázisban lévő nézeten keresztül.
  • Az e-mailek négy lehetséges állapot egyikével rendelkeznek: küldött, nem küldött, újrapróbálkozási, és sikertelen volt.

Az e-mail állapotának ellenőrzéséhez futtasson egy lekérdezést a msdb.dbo.sysmail_event_log rendszernézeten.

A Transact-SQL használatával megtekintheti a Database Mail használatával küldött e-mailek állapotát

  • Válasszon a sysmail_allitems táblázatból, meghatározva az érdekelt üzeneteket a mailitem_id vagy sent_status szerint.

  • Az sysmail_allitems-t kapcsolja össze az sysmail_event_log nézettel az mailitem_id oszlop alapján az e-mailek külső programból visszaadott állapotának ellenőrzéséhez.

    Alapértelmezés szerint a külső program nem naplózza a sikeresen elküldött üzenetek adatait. Az összes üzenet naplózásához állítsa a naplózási szintet részletesre a Adatbázis-levelezés konfigurációs varázslójának Rendszerparaméterek konfigurálása lapján.

Az alábbi példa az danw küldött e-mailekről tartalmaz információkat, amelyeket a külső program nem tudott sikeresen elküldeni. Az utasítás felsorolja a tárgyat, azt a dátumot és időpontot, amikor a külső program nem tudta elküldeni az üzenetet, valamint a hibaüzenetet az Adatbázis-naplóból.

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