sql >> Databasteknik >  >> RDS >> Sqlserver

Markera Osänd e-post i SQL Server (T-SQL)

När du skickar e-postmeddelanden från SQL Server kan du kontrollera om det finns e-postmeddelanden som inte har skickats med sysmail_unsentitems visa.

Exempel

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

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultat (med vertikal utdata):

mailitem_id                 | 4
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 04:11:19.300
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | unsent
sent_date                   | NULL
last_mod_date               | 2020-08-24 04:11:19.300
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 finns det ett osänt e-postmeddelande. Jag råkade köra den här frågan direkt efter att ha kört msdb.dbo.sp_send_dbmail att skicka detta mail.

Det visade sig att e-postmeddelandet skickades direkt efter att jag kopierade ovanstående resultat, och nu när jag kör den frågan igen får jag noll resultat (dvs. det finns inga osända e-postmeddelanden).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultat:

(0 rows affected)

Men bara för att det inte finns några osända e-postmeddelanden betyder det inte att det inte finns några som misslyckades.

Du kan fråga sysmail_faileditems för att returnera en lista över misslyckade e-postmeddelanden.

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. Spåra synkrona statistikuppdateringar

  2. CX_Oracle - importera data från Oracle till Pandas dataram

  3. Gruppera efter klausul i mySQL och postgreSQL, varför felet i postgreSQL?

  4. 25 Microsoft Access-genvägar för att spara tid i tabeller i databladsvy