Разница xp_sendmail и sp_send_dbmail proc

Могу ли я спросить, в чем разница между xp_sendmail а также sp_send_dbmail прок? Они оба отправляют сообщение электронной почты, которое может включать в себя вложение набора результатов запроса, указанным получателям.....

В чем разница?

3 ответа

xp_sendmail требует наличия клиента MAPI, такого как Outlook, на сервере. Это единственный вариант для SQL Server 2000 и более ранних версий.

sp_send_dbmail простое SMTP-решение, добавленное для SQL Server 2005+

sp_send_dbmail намного лучше.

Другое различие между ними заключается в том, что сообщение электронной почты, отправленное с помощью sp_send_dbmail(), будет откатываться (не отправляться), если откат транзакции. Этого не происходит с электронной почтой, отправленной с помощью xp_sendmail().

Итак, если вы хотите, чтобы сообщение электронной почты отправлялось независимо от конечного результата транзакции, вам нужно использовать xp_sendmail().

Я отправлял электронные письма, чтобы уведомить пользователей, если SP не смог завершить свою обработку. Конечно, я откатил транзакцию в этом случае. Когда я переключился на sp_send_dbmail(), транзакции, которые откатывались (те самые, от которых я хотел получать уведомление по электронной почте), перестали отправлять электронные письма.

Мы не контролируем вызывающий код - он закрыт и вызывает sp в транзакции. Нам нужна функция в SQL Server для отправки прямой или очистки почтовой очереди.

Другие вопросы по тегам