Sto cercando un modo per verificare se una particolare e-mail in coda utilizzando sp_send_dbmail
viene infine inviata correttamente dal nostro server di Exchange. Ho esaminato le tabelle di sistema msdb.dbo.sysmail_mailitems
e msdb.dbo.sysmail_log
. msdb.dbo.sysmail_log
sembra essere il più utile dei due; in particolare, la sua colonna description
. Dai test che abbiamo condotto finora, sembra che ogni volta che si verifica un errore, un messaggio nel seguente formato viene visualizzato nella colonna description
:Verifica se sp_send_dbmail ha avuto esito positivo
La posta non potrebbe essere inviato ai destinatari a causa del server di posta fallimento. (Invio di posta utilizzando l'Account 3 (2012-11-01T11: 28: 04). Messaggio di eccezione: Impossibile inviare email al server di posta (la casella di posta non disponibile. La risposta del server era: 5.7.1 Impossibile inoltrare per thisemail @ email .com).)
Questo è incluso con altre righe che condividono lo stesso process_id
. La descrizione per i record che racchiudono sono
processo DatabaseMail viene avviato
e
processo DatabaseMail si sta spegnendo
Se un messaggio e-mail è stata inviata con successo, le stesse 2 righe sono registrate nella tabella, tranne che senza righe racchiuse tra loro.
Quindi, se ho un invio di successo, appare il seguente nella tabella
e se ho un fallimento di invio, i record di log questo
sono lì altre istanze di come le voci possono essere registrate se una mandata è fallita o se una mandata è andata a buon fine? Ad esempio, potrebbe essere possibile che ci siano 4 righe di voci per una mandata (2 allegando affermando quando è stato avviato e quando è stato chiuso, e 2 allegata affermando che l'e-mail è stata inviata con successo). Non ho trovato record di log che si sono allontanati dal pattern sopra elencato, ma vorrei essere sicuro prima di scrivere una logica basata su questa ipotesi.
Era esattamente quello che stavo cercando. Grazie –