Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
I det här avsnittet beskrivs hur du kontrollerar statusen för det e-postmeddelande som skickas med Hjälp av Database Mail i SQL Server med hjälp av Transact-SQL.
Innan du börjar:
För att visa status för e-postmeddelandet som skickats med hjälp av Database Mail använder du:Transact-SQL-
Innan du börjar
Database Mail behåller kopior av utgående e-postmeddelanden och visar dem i sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditems vyer av msdb-databasen. Det externa programmet Database Mail loggar aktiviteten och visar loggen via Windows-programhändelseloggen och sysmail_event_log-vyn i msdb-databasen. Om du vill kontrollera statusen för ett e-postmeddelande kör du en fråga mot den här vyn. E-postmeddelanden har en av fyra möjliga statusar: skickade, ej, försök igenoch misslyckades.
Använda Transact-SQL
Så här visar du status för e-postmeddelandet som skickats med hjälp av Database Mail
Välj från tabellen sysmail_allitems och specificera meddelanden av intresse med hjälp av mailitem_id eller sent_status.
Om du vill kontrollera statusen som returneras från det externa programmet för e-postmeddelandena, koppla ihop sysmail_allitems med sysmail_event_log-vyn på kolumnen mailitem_id, som visas i följande avsnitt.
Som standard loggar inte det externa programmet information om meddelanden som har skickats. Om du vill logga alla meddelanden anger du loggningsnivån till utförlig med hjälp av sidan Konfigurera systemparametrar i konfigurationsguiden för Database Mail.
Exempel (Transact-SQL)
I följande exempel visas information om eventuella e-postmeddelanden som skickas till danw
som det externa programmet inte kunde skicka. Instruktionen visar ämnet, datum och tid då det externa programmet inte kunde skicka meddelandet och felmeddelandet från Database Mail-loggen.
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