Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Felü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_sentitemsadatbázis ,sysmail_unsentitems,sysmail_faileditemsmsdbné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_logmsdbadatbá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_allitemstáblázatból, meghatározva az érdekelt üzeneteket amailitem_idvagysent_statusszerint.Az
sysmail_allitems-t kapcsolja össze azsysmail_event_lognézettel azmailitem_idoszlop 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