2009-08-01 9 views
6

Czy mogę zapytać, jaka jest różnica między procem xp_sendmail i sp_send_dbmail? Obaj wysyłają wiadomość e-mail, która może zawierać załącznik z zestawem wyników zapytania, do określonych odbiorców .....różnica xp_sendmail i sp_send_dbmail proc

Jaka jest różnica?

Odpowiedz

15

xp_sendmail wymaga zainstalowanego klienta MAPI, takiego jak Outlook, na serwerze. Jest to jedyna opcja dla SQL Server 2000 i wcześniejszych.

sp_send_dbmail to proste rozwiązanie SMTP, dodany do SQL Server 2005+

sp_send_dbmail jest zdecydowanie lepiej.

+0

Dzięki .... Rozumiem! –

3

Kolejna różnica między nimi polega na tym, że wiadomość e-mail wysłana przy użyciu sp_send_dbmail() zostanie wycofana (nie wysłana), jeśli transakcja zostanie wycofana. Nie dotyczy to wiadomości e-mail wysyłanych przy użyciu xp_sendmail().

Tak więc, jeśli chcesz, aby wiadomość e-mail została wysłana bez względu na wynik końcowy transakcji, musisz użyć xp_sendmail().

Wysyłałem wiadomości e-mail, aby powiadomić użytkowników, jeśli SP nie był w stanie ukończyć przetwarzania. Oczywiście w tym przypadku wycofałem transakcję. Kiedy przełączyłem się na sp_send_dbmail(), transakcje, które zostały wycofane (te, z których chciałem otrzymać powiadomienie e-mailem) przestały wysyłać e-maile.

+0

Nawet jeśli wiadomości muszą być wysyłane niezależnie od wycofania transakcji, możliwe jest użycie 'sp_send_dbmail'. Przechowuj wszystkie informacje w zmiennej tabeli i wysyłaj po wycofaniu. – ajeh

0

Nie kontrolujemy kodu wywołującego - jest on zamknięty i wywołuje sp w transakcji. Potrzebujemy funkcji w SQL Server, aby wysłać bezpośrednio lub opróżnić kolejkę.

+0

Twoja odpowiedź sprawia wrażenie niezwiązanego z pytaniem. – Yunnosch

+0

jest to związane z jedną z różnic, queing w sp_send_dbmail i problem podczas wysyłania wiadomości e-mail z transakcji, która jest później wycofana. W naszym przypadku nie wykonujemy wycofywania, więc nie możemy niczego przechowywać. Jest to związane z ajeh Mar 21 o 21:21 komentarz. –