2009-08-01 23 views
6

¿Puedo preguntar cuál es la diferencia entre xp_sendmail y sp_send_dbmail proc? Ambos son mensajes de correo electrónico enviados, que pueden incluir un archivo adjunto de resultado de consulta adjunto, a los destinatarios especificados .....diferencia xp_sendmail y sp_send_dbmail proc

¿Cuál es la diferencia?

Respuesta

15

xp_sendmail requiere un cliente MAPI instalado, como Outlook, en el servidor. Esta es la única opción para SQL Server 2000 y anteriores.

sp_send_dbmail es una solución sencilla SMTP, añaden para SQL Server 2005 +

sp_send_dbmail es, con mucho, mejor.

+0

Gracias ... ¡¡Entiendo !! –

3

Otra diferencia entre los dos es que el mensaje de correo electrónico enviado mediante sp_send_dbmail() se retrotraerá (no se enviará) si la transacción se revierte. Esto no sucede con el correo electrónico enviado usando xp_sendmail().

Por lo tanto, si desea que se envíe el mensaje de correo electrónico, independientemente del resultado final de la transacción, deberá usar xp_sendmail().

Estaba enviando correos electrónicos para notificar a los usuarios si un SP no pudo completar su procesamiento. Por supuesto, estaba cancelando la transacción en ese evento. Cuando cambié a sp_send_dbmail(), las transacciones que se estaban retrotrayendo (las mismas de las que quería recibir una notificación por correo electrónico) dejaron de enviar correos electrónicos.

+0

Incluso si los mensajes deben enviarse independientemente de la reversión de la transacción, es posible usar 'sp_send_dbmail'. Almacene toda la información en una variable de tabla y envíela después de la reversión. – ajeh

0

no controlamos el código de llamada - está cerrado y llama a la sp en una transacción. Necesitamos una característica en SQL Server para enviar directamente o vaciar la cola de correo.

+0

Su respuesta da la impresión de no estar relacionado con la pregunta. – Yunnosch

+0

está relacionado con una de las diferencias, queing en sp_send_dbmail, y el problema cuando se envía un correo electrónico desde una transacción que luego se revierte. En nuestro caso, no realizamos la reversión, por lo que no podemos almacenar nada. Está relacionado con el ajeh 21 de marzo a las 21:21. –