2009-08-01 7 views
6

Kann ich fragen, was ist der Unterschied zwischen xp_sendmail und sp_send_dbmail proc? Sie senden beide eine E-Mail-Nachricht, die eine Abfrageergebnissatzanlage enthalten kann, an die angegebenen Empfänger.Unterschied xp_sendmail und sp_send_dbmail proc

Was ist der Unterschied?

Antwort

15

xp_sendmail erfordert einen MAPI-Client wie Outlook auf dem Server installiert. Dies ist die einzige Option für SQL Server 2000 und davor.

sp_send_dbmail eine einfache SMTP-Lösung ist, hinzugefügt für SQL Server 2005+

sp_send_dbmail bei weitem besser ist.

+0

Danke .... Ich verstehe !! –

3

Ein weiterer Unterschied zwischen den beiden besteht darin, dass E-Mail-Nachrichten, die mit sp_send_dbmail() gesendet wurden, zurückgesetzt werden (nicht gesendet), wenn die Transaktion zurückgesetzt wird. Dies passiert nicht bei E-Mails, die mit xp_sendmail() gesendet werden.

Wenn Sie möchten, dass die E-Mail-Nachricht unabhängig vom Endergebnis der Transaktion gesendet wird, müssen Sie xp_sendmail() verwenden.

Ich habe E-Mails gesendet, um Benutzer zu benachrichtigen, wenn ein SP seine Verarbeitung nicht abschließen konnte. Natürlich habe ich die Transaktion in diesem Fall rückgängig gemacht. Als ich zu sp_send_dbmail() wechselte, stoppten die Transaktionen, die zurückgerollt wurden (genau die, von denen ich eine E-Mail-Benachrichtigung erhalten wollte), das Senden von E-Mails.

+0

Auch wenn die Nachrichten unabhängig vom Transaktions-Rollback gesendet werden müssen, ist es möglich, 'sp_send_dbmail' zu verwenden. Speichern Sie alle Informationen in einer Tabellenvariablen und senden Sie sie nach dem Rollback. – ajeh

0

Wir kontrollieren nicht den aufrufenden Code - es ist geschlossen und ruft das SP in einer Transaktion auf. Wir benötigen eine Funktion in SQL Server, um die E-Mail-Warteschlange direkt zu senden oder zu leeren.

+0

Ihre Antwort vermittelt den Eindruck, dass Sie nicht mit der Frage verbunden sind. – Yunnosch

+0

Es bezieht sich auf einen der Unterschiede, Warteschlangen in sp_send_dbmail und das Problem beim Senden von E-Mails von einer Transaktion, die später zurückgesetzt wird. In unserem Fall machen wir das Rollback nicht und können nichts speichern. Es ist mit dem ajeh 21. März um 21:21 Kommentar verwandt. –