разница xp_sendmail и sp_send_dbmail proc - PullRequest
6 голосов
/ 01 августа 2009

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

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

Ответы [ 3 ]

16 голосов
/ 01 августа 2009

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

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

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

6 голосов
/ 03 марта 2011

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

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

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

0 голосов
/ 28 июня 2017

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

...