Разница 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 для отправки прямой или очистки почтовой очереди.