Benutzer mit den meisten Antworten
Mail innerhalb eines Try / Catch-Blocks wird nicht gesendet

Frage
-
Hallo zusammen,
ich habe folgendes Problem. Ich möchte innerhalb eines Try / Catch-Blocks eines Jobs mittels msdb.dbo.sp_send_dbmail eine Mail verschicken. Jedoch kommt diese mail nicht an. Es wird aber im Verlauf des Jobs angezeigt, dass die Mail auf die queue gelegt wurde. An anderen stellen im Job funktioniert der Versandt jedoch Problemlos.
Hier ein Beispielcode:
SET QUOTED_IDENTIFIER ON print 'Mail1 start' EXEC msdb.dbo.sp_send_dbmail @recipients = 'test@test.com', @subject = 'Mail 1', @body = 'Testmail', @attach_query_result_as_File = 0 print 'Mail1 end' BEGIN TRY print 'Mail2 start' EXEC msdb.dbo.sp_send_dbmail @recipients = 'test@test.com', @subject = 'Mail 2', @body = 'Testmail', @attach_query_result_as_File = 0 print 'Mail2 end' EXEC fehlerhafteFunktion END TRY BEGIN CATCH print 'Mail3 start' EXEC msdb.dbo.sp_send_dbmail @recipients = 'test@test.com', @subject = 'Mail 3', @body = 'Testmail', @attach_query_result_as_File = 0 print 'Mail3 end' END CATCH
Hier auch noch die Ausgabe des Verlaufs in dem ersichtlich wird, dass der Catch-Block auch durchlaufen wird:
Ausgeführt als Benutzer: ''MYDOM\SQLUSER''. Mail1 start [SQLSTATE 01000] (Meldung 0) E-Mail (ID: 5049) in der Warteschlange. [SQLSTATE 01000] (Meldung 0) Mail1 end [SQLSTATE 01000] (Meldung 0) Mail2 start [SQLSTATE 01000] (Meldung 0) E-Mail (ID: 5050) in der Warteschlange. [SQLSTATE 01000] (Meldung 0) Mail2 end [SQLSTATE 01000] (Meldung 0) Mail3 start [SQLSTATE 01000] (Meldung 0) E-Mail (ID: 5051) in der Warteschlange. [SQLSTATE 01000] (Meldung 0) Mail3 end [SQLSTATE 01000] (Meldung 0). Der Schritt war erfolgreich.
Ich hoffe, es kann jemand helfen, woran das liegen könnte.
Viele Grüße
Florian
Antworten
-
ja.
schau die Errorcodes in CATCH Block an - vielleicht gibt es Dir eine Auskunft warum die Mails nicht gesendet wurde.
Ueberdies, schau Dir mal diesen Thread an:
und speziell den undokumnetieren Return Wert von sp-send_dbmail.
Frage, wird Mail 3 geschickt ?
und lies mal diesen Kommentar in der Technischen Referenz: http://msdn.microsoft.com/de-de/library/ms190307.aspx
Wird sp_send_dbmail ohne Transaktionskontext ausgeführt, startet Datenbank-E-Mail eine implizite Transaktion und führt einen Commit für die Transaktion aus. Wird sp_send_dbmail innerhalb einer vorhandenen Transaktion ausgeführt, überlässt Datenbank-E-Mail es dem Benutzer, entweder einen Commit oder ein Rollback für Änderungen auszuführen. Es wird keine innere Transaktion gestartet
Please use Mark as Answer if my post solved your problem and use Vote As Helpful if a post was useful.
- Bearbeitet Daniel_Steiner Samstag, 12. Januar 2013 20:51
- Als Antwort markiert FlorianFriedrich Mittwoch, 16. Januar 2013 12:25
Alle Antworten
-
ja.
schau die Errorcodes in CATCH Block an - vielleicht gibt es Dir eine Auskunft warum die Mails nicht gesendet wurde.
Ueberdies, schau Dir mal diesen Thread an:
und speziell den undokumnetieren Return Wert von sp-send_dbmail.
Frage, wird Mail 3 geschickt ?
und lies mal diesen Kommentar in der Technischen Referenz: http://msdn.microsoft.com/de-de/library/ms190307.aspx
Wird sp_send_dbmail ohne Transaktionskontext ausgeführt, startet Datenbank-E-Mail eine implizite Transaktion und führt einen Commit für die Transaktion aus. Wird sp_send_dbmail innerhalb einer vorhandenen Transaktion ausgeführt, überlässt Datenbank-E-Mail es dem Benutzer, entweder einen Commit oder ein Rollback für Änderungen auszuführen. Es wird keine innere Transaktion gestartet
Please use Mark as Answer if my post solved your problem and use Vote As Helpful if a post was useful.
- Bearbeitet Daniel_Steiner Samstag, 12. Januar 2013 20:51
- Als Antwort markiert FlorianFriedrich Mittwoch, 16. Januar 2013 12:25
-
Die Technische Referenz war die Lösung! Vielen vielen Dank!
Ich schätze, in der Funktion, die den Fehler wirft wird eine Transaktion geöffnet, dann kommt der Fehler und die Transaktion wird bei Mail 3 nicht beendet. Wenn ich nun vor Mail 3 ein ROLLBACK bzw. COMMIT mache, wird die Mail verschickt. Vielen vielen Dank!