sql >> Databasteknik >  >> RDS >> Sqlserver

Kontrollera efter misslyckad e-post i SQL Server (T-SQL)

Om du försöker skicka e-post med SQL Server men den inte levereras, prova att kontrollera sysmail_faileditems visa.

Exempel

Här är ett exempel på hur du letar efter misslyckad e-post. Observera att den måste köras på msdb databas.

SELECT * FROM msdb.dbo.sysmail_faileditems;

Resultat (med vertikal utdata):

mailitem_id                 | 1
profile_id                  | 1
recipients                  | [email protected]
copy_recipients             | NULL
blind_copy_recipients       | NULL
subject                     | SQL Server Agent Job: FAILED
body                        | Your favorite SQL Server Agent job just failed
body_format                 | TEXT
importance                  | NORMAL
sensitivity                 | NORMAL
file_attachments            | NULL
attachment_encoding         | MIME
query                       | NULL
execute_query_database      | NULL
attach_query_result_as_file | 0
query_result_header         | 1
query_result_width          | 256
query_result_separator      |  
exclude_query_output        | 0
append_query_error          | 0
send_request_date           | 2020-08-24 02:40:48.093
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | failed
sent_date                   | 2020-08-24 02:41:53.000
last_mod_date               | 2020-08-24 02:41:53.290
last_mod_user               | sa

Jag använde vertikal utmatning här så att du inte behöver rulla i sidled för att se alla kolumner.

I det här fallet visar jag ett misslyckat e-postmeddelande. Jag hade faktiskt två misslyckade e-postmeddelanden men jag bestämde mig för att det var mer kortfattat att bara visa ett resultat.

I mitt fall hade jag använt fel e-postserver i koden som skickar mejlet, och mejlen misslyckades. Så snart jag uppdaterade koden för att använda rätt e-postserver skickades alla efterföljande e-postmeddelanden framgångsrikt. Detta ändrar dock inte de som redan hade misslyckats, och därför finns de kvar i sysmail_faileditems visa.

Du kan fråga sysmail_unsentitems för att returnera en lista över osända e-postmeddelanden (de som ännu inte har skickats, inte nödvändigtvis misslyckade).

Du kan också fråga sysmail_sentitems för att få alla skickade e-postmeddelanden.

Du kan också fråga sysmail_allitems för att få alla e-postmeddelanden (skickade, ej skickade, misslyckades och försöker igen).


  1. Guide till designdatabas för lagerhanteringssystem i MySQL

  2. Tips för att hantera PostgreSQL på distans

  3. Registrera och kör PostgreSQL 9.0 som Windows Service

  4. Ansluter till MySQL med Python