inviare dbmail su @@ errore dal sql server 2005
-
26-09-2019 - |
Domanda
Sto cercando di inviare la posta database quando si verifica un errore all'interno della configurazione transaction.My per dbo.sp_send_dbmail è corretto, quando eseguo il proc faccio ottenere una e-mail entro 1 min.
Tuttavia quando provo ad usare dbo.sp_send_dbmail all'interno di un altro proc all'interno di transazioni che non ho ricevuto l'e-mail. sql server fa spettacolo nella finestra dei risultati che "posta in coda", ma non ho mai riceverlo.
BEGIN TRANSACTION
DECLARE @err int DECLARE @test nvarchar (max)
RAISERROR ( 'Questo è un test', 16, 1) SELEZIONA @err = @@ ERROR
Se @err <> 0 BEGIN
SET @test = error_message ()
EXEC msdb.dbo.sp_send_dbmail
@ Destinatari = 'mail@mail.net',
@body = 'test interno',
@subject = 'Errore con proc',
@body_format = 'HTML',
@append_query_error = 1,
@profile_name = 'Posta elettronica database Profilo';ROLLBACK TRANSACTION RITORNO END
COMMIT TRANSACTION
E ho risultato come
Msg 50000, livello 16, stato 1, riga 7
Questo è un test
Posta in coda.
Soluzione
È rotolato indietro in modo che non è mai andato fuori, inserire il codice di posta elettronica al di fuori della transazione
Dai libri on line
Quando si esegue sp_send_dbmail da all'interno di una transazione esistente, Posta elettronica database si basa su l'utente a sia commettere o rullo posteriore qualsiasi i cambiamenti. Non avviare un interno transazione.
Altri suggerimenti
È necessario creare un punto di salvataggio, tentare l'operazione, in caso di rollback di errore al punto di salvataggio, inviare il messaggio di posta elettronica poi commesso. Simile al modello descritto in gestione delle eccezioni e le transazioni nidificate .