Sql server xp_sendmail和sp_send_dbmail程序的区别

Sql server xp_sendmail和sp_send_dbmail程序的区别,sql-server,sqlmail,Sql Server,Sqlmail,请问xp\u sendmail和sp\u send\u dbmailproc之间有什么区别?它们都是向指定的收件人发送电子邮件,其中可能包括查询结果集附件 有什么区别 xp\u sendmail要求在服务器上安装MAPI客户端,如Outlook。这是SQL Server 2000及更早版本的唯一选项 sp_send_dbmail是一个简单的SMTP解决方案,是为SQL Server 2005添加的+ sp_send_dbmail要好得多。两者之间的另一个区别是,如果事务回滚,使用sp_send_

请问
xp\u sendmail
sp\u send\u dbmail
proc之间有什么区别?它们都是向指定的收件人发送电子邮件,其中可能包括查询结果集附件


有什么区别

xp\u 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中的一项功能来直接发送或刷新邮件队列。

即使不管事务回滚如何都必须发送邮件,也可以使用
sp\u send\u dbmail
。将所有信息存储在表变量中,并在回滚后发送。这与其中一个差异有关,即sp_send_dbmail中的queing,以及从稍后回滚的事务发送电子邮件时的问题。在本例中,我们不执行回滚,因此无法存储任何内容。这与3月21日21:21的ajeh评论有关。