GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Database Mail en SQL Server 2008 R2


En este artículo vamos tratar el Database Mail de SQL Server 2008 R2, una característica disponible desde SQL Server 2005, que facilita el envío de correo electrónico desde SQL Server, y que se presenta como una interesante mejora frente a su antecesor, el SQL Mail, con el que convivimos en anteriores versiones del producto, como SQL Server 2000.

Qué es Database Mail

Database Mail es una característica disponible desde SQL Server 2005, que permite el envío asíncrono de correo electrónico desde el motor de base de datos (incluyendo ficheros adjuntos, resultados de consultas, envío de correo electrónico en formato HTML, Notificación a Operadores por Alertar o finalización de Jobs, etc.). Utiliza directamente el protocolo SMTP, y para poder ser utilizado, debe ser previamente habilitado (con sp_configure) y configurado en SQL Server (especialmente, los perfiles de correo). Database Mail viene a sustituir a SQL Mail, que actualmente se incluye por motivos de compatibilidad hacia atrás, y en futuras versiones desaparecerá. Además, Database Mail está soportado para funcionar en una instalación de SQL Server en Cluster. De hecho, en esta serie de artículos configuraremos y usaremos Database Mail es una instalación en Cluster de SQL Server 2008 R2 sobre un Failover Cluster de Windows Server 2008 R2.

Database Mail es un componente que se ejecuta fuera del proceso del propio motor de base de datos (es decir, del propio SQL Server), lo cual implica ciertas ventajas desde el punto de vista de la estabilidad del sistema, ya que una pérdida de servicio o una incidencia de Database Mail no afectará al motor de base de datos, al tratarse de procesos independientes. En particular, en SQL Server 2008 R2 se trata del ejecutable DatabaseMail.exe.

Database Mail es un componente que se ejecuta fuera del proceso del propio motor de base de datos (es decir, del propio SQL Server), lo cual implica ciertas ventajas desde el punto de vista de la estabilidad del sistema, ya que una pérdida de servicio o una incidencia de Database Mail no afectará al motor de base de datos, al tratarse de procesos independientes. En particular, en SQL Server 2008 R2 se trata del ejecutable DatabaseMail.exe

El funcionamiento de Database Mail se apoya en el Service Broker, es decir, para su correcto funcionamiento, Service Broker debe estar habilitado en la base de datos del sistema MSDB. De este modo, cada vez que se envía un correo electrónico con Database Mail, se realizará de forma asíncrona, pudiendo ser encolado si fuera necesario.

Con Database Mail podemos configurar múltiples perfiles de correo electrónico. Cada perfil de correo electrónico, puede ser Público o Privado. Los perfiles Públicos pueden ser utilizados por cualquier usuario, mientras que los perfiles privados están asociados a un usuario específico.

En la configuración de cada perfil de correo electrónico especificaremos una o varias cuentas de correo electrónico, ordenadas según la prioridad que deseemos dar a cada cuenta. Cuando hablamos de cuentas de correo electrónico, nos referimos a las correspondientes configuraciones de correo electrónico, principalmente el servidor SMTP, autenticación de acceso al SMTP (básica, integrada en Windows, o acceso anónimo), y la cuenta de correo electrónico. El hecho de configurar múltiples cuentas para un único perfil, nos permite que en caso de fallo en el envío de correo electrónico utilizando una cuenta, se pueda intentar el envío utilizando el resto de cuentas configuradas, siguiendo el orden de prioridad asignado a las cuentas.

Database Mail también nos permite realizar ciertas configuraciones globales de gran utilidad, en particular:

  • Account Retry Attempts.
  • Account Retry Delay (seconds).
  • Maximum File Size (Bytes).
  • Prohibited Attachment File Extensions.
  • Database Mail Executable Minimum Lifetime (seconds).
  • Logging Level.

Así, por defecto Database Mail limita el tamaño de los ficheros adjuntos a 1MB. Si necesitamos ampliar este límite, tan sólo tendremos que modificar la correspondiente configuración global (Maximum File Size).

Una vez configurado Database Mail, podremos utilizarlo para enviar correo electrónico desde TSQL (incluyendo emails en formato HTML). Sin embargo, también lo podremos utilizar con el Agente de SQL Server, para el envío de Notificaciones por correo electrónico a los Operadores, tanto en el caso de las Alertas, como en la finalización de Jobs, etc. Por ejemplo, nos puede resultar muy interesante que nos envíe un correo electrónico cuando un Job finaliza con errores.

Todos los correos electrónicos enviados por Database Mail quedan registrados en un tabla del sistema de MSDB a modo de histórico, por lo cual, en algunos casos puede resultarnos de interés consultar dicha tabla (o las vistas del sistema relacionadas).

Principales diferencias entre Database Mail y SQL Mail

Sin duda, un tema interesante: Database Mail vs SQL Mail. Como se puede ver a continuación, Database Mail gana por goleada. De hecho, es recomendable migrar SQL Mail a Database Mail, si es que aún utilizamos SQL Mail, pues además, SQL Mail será eliminado en futuras versiones de SQL Server. De hecho, desde SQL Server 2005, SQL Mail se mantiene tan sólo por motivos de compatibilidad hacia atrás. Breve comparación:

  • Database Mail. Está basado en SMTP (Simple Mail Transfer Protocol), es decir, utiliza directamente el servidor SMTP configurado para el envío del correo electrónico, por lo que resulta más apropiado y seguro. Pueden configurarse los perfiles de correo electrónico deseados directamente desde SQL Server (de forma gráfica o con TSQL). Database Mail es un proceso independiente a SQL Server, que es utilizado mediante procedimientos almacenados del sistema y el Service Broker, recomendable para evitar problemas de estabilidad y de rendimiento. Database Mail SI está soportado en instalaciones de SQL Server en Cluster, lo cual, junto a la posibilidad de poder utilizar múltiples cuentas de correo (es decir, múltiples servidores SMTP), se presenta como una gran ventaja en el terreno de la Alta Disponibilidad.
  • SQL Mail. Está basado en MAPI (Messaging Application Programming Interface), es decir, requiere de la instalación de un Cliente MAPI como Microsoft Outlook en la propia máquina SQL Server, menos rápido y seguro. De este modo, SQL Mail utilizará los componentes MAPI de una aplicación externa (ej: Microsoft Outlook) para enviar y recibir correos electrónicos. Deben configurarse los perfiles de correo electrónico en el servidor con el cliente MAPI utilizado (ej: Outlook), lo cual resulta algo tedioso. La utilización de SQL Mail se realiza utilizando procedimientos almacenados extendidos (ej: xp_sendmail), los cuales invocarán al cliente de correo utilizado. SQL Mail no está soportado en instalaciones de SQL Server en Cluster, ya que el interfaz MAPI utilizado por SQL Server no es Cluster-Aware.

Hasta aquí llega el presente artículo. Próximamente, aprovecharemos para hablar sobre cómo configurar Database Mail en SQL Server 2008 R2 y como utilizar Database Mail en SQL Server 2008 R2, para así finalizar esta serie de artículos sobre Database Mail.

Poco más por hoy. Como siempre, confío que la lectura resulte de interés.

 


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Marzo de 2019 (1)
Octubre de 2018 (1)
Julio de 2018 (1)
Junio de 2018 (4)
Mayo de 2018 (5)
Abril de 2018 (3)
Marzo de 2018 (2)
Febrero de 2018 (7)
Enero de 2018 (1)
Diciembre de 2017 (15)
Noviembre de 2017 (7)
Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.