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

Utilizar Database Mail en SQL Server 2008 R2


En este artículo último artículo de la serie de Database Mail en SQL Server 2008 R2, vamos a introducir las nociones básicas para saber cómo utilizar Database Mail en SQL Server 2008 R2, tanto para enviar correos electrónicos desde TSQL, como para configurar el SQL Server Agent con un perfil de correo de Database Mail, y así poder enviar Notificaciones por correo electrónico a Operadores, en caso de Alertas, finalizaciones de Jobs, etc.

Una vez que ya hemos hablado de Database Mail en SQL Server 2008 R2, así como sabemos configurar Database Mail en SQL Server 2008 R2, llega el momento de introducir las nociones básicas para saber cómo utilizar Database Mail en SQL Server 2008 R2 para enviar correos electrónicos. En nuestro caso de ejemplo, partimos de una instalación en Cluster de SQL Server 2008 R2 sobre un Failover Cluster de Windows Server 2008 R2, en la cual realizaremos las pruebas del presente artículo.

Utilización de Database Mail en SQL Server 2008 R2

Quizás lo primero que debamos hacer tras finalizar la configuración de Database Mail, es enviar un correo electrónico de prueba. Para ello, quizás lo más fácil, es utilizar la opción Send Test E-Mail del menú contextual de Database Mail, dentro del SQL Server Management Studio (SSMS), como se muestra en la siguiente pantalla capturada.

Quizás lo primero que debamos hacer tras finalizar la configuración de Database Mail, es enviar un correo electrónico de prueba. Para ello, quizás lo más fácil, es utilizar la opción Send Test E-Mail del menú contextual de Database Mail, dentro del SQL Server Management Studio (SSMS), como se muestra en la siguiente pantalla capturada

En la pantalla Send Test E-Mail, especificaremos los datos del correo electrónico de prueba que deseamos enviar, y click en Send Test E-mail.

En la pantalla Send Test E-Mail, especificaremos los datos del correo electrónico de prueba que deseamos enviar, y click en Send Test E-mail.

Se mostrará la pantalla Database Mail Test E-mail, en la cual deberemos especificar si el correo electrónico de prueba ha sido enviado con éxito o no.

Se mostrará la pantalla Database Mail Test E-mail, en la cual deberemos especificar si el correo electrónico de prueba ha sido enviado con éxito o no.

Comprobaremos que efectivamente, el correo electrónico de prueba ha sido enviado con éxito, y haremos click en el botón OK.

Comprobaremos que efectivamente, el correo electrónico de prueba ha sido enviado con éxito, y haremos click en el botón OK.

Una vez que tenemos certeza de que Database Mail está configurado correctamente, podemos empezar a utilizarlo. Una de las formas más básicas de utilización de Database Mail es mediante el procedimiento almacenado del sistema MSDB.dbo.sp_send_dbmail, para lo cual, deberemos tener permisos de ejecución sobre dicho procedimiento almacenado (en muchos casos, configurando la pertenencia de role DatabaseMailUserRole existente en MSDB). De este modo, podremos enviar correos electrónicos directamente desde nuestro código TSQL, pudiendo especificar el perfil de Database Mail que deseamos utilizar, destinatarios, asunto, cuerpo del mensaje, formato del cuerpo del mensaje (texto o HTML), etc. En la ayuda de SQL Server (es decir, en los Books-On-Line o BOL) podemos encontrar varios ejemplos que nos pueden resultar de ayuda. A continuación se incluyen algunos ejemplos con sp_send_dbmail:

-- Sending an email from TSQL
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'GuilleSQL'
,@recipients = 'administrator@guillesql.local'
,@subject = 'Sending an email from TSQL'
,@body = 'Sending a test email from SQL Server using Database Mail.'

-- Sending an email from TSQL with the results of a query
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'GuilleSQL'
,@recipients = 'administrator@guillesql.local'
,@subject = 'Sending an email from TSQL with the results of a query'
,@body = 'Sending an email from TSQL with the results of a query, using Database Mail.'
,@query = 'SELECT name from sys.databases'
,@attach_query_result_as_file = 1
,@query_attachment_filename = 'databasenames.txt'

-- Sending HTML email from TSQL
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'GuilleSQL'
,@recipients = 'administrator@guillesql.local'
,@subject = 'Sending HTML email from TSQL'
,@body_format = 'HTML'
,@body = '<h1>HTML email</h1><p>Sending a HTML email from TSQL using Database Mail.</p>'

Los envíos de correos electrónicos utilizando Database Mail quedan registrados en la tabla del sistema MSDB.dbo.sysmail_mailitems, por lo tanto, quizás nos pueda interesar en alguna ocasión consultar, bien esta tabla, o bien alguna de las vistas existentes (MSDB.dbo.sysmail_allitems, MSDB.dbo.sysmail_faileditems, MSDB.dbo.sysmail_unsentitems, MSDB.dbo.sysmail_sentitems).

Configurar SQL Server Agent para utilizar un perfil de Database Mail

Otra de las tareas que muy probablemente nos pueda interesar realizar con Database Mail es configurar el Agente de SQL Server para el envío de Notificaciones por correo electrónico (ej: resultado de ejecuciones de Jobs, Alertas, etc.). De este modo, podremos definir Operadores y asignarles direcciones de correo electrónico, para así poder utilizarlos para las Notificaciones que necesitemos. Para configurar el Agente de SQL Server para el envío de Notificaciones de correo electrónico, deberemos habilitar el envío de correo electrónico con Database Mail y elegir el perfil de correo deseado. Para ello, mostraremos el diálogo de propiedades del Agente de SQL Server.

Otra de las tareas que muy probablemente nos pueda interesar realizar con Database Mail es configurar el Agente de SQL Server para el envío de Notificaciones por correo electrónico (ej: resultado de ejecuciones de Jobs, Alertas, etc.). De este modo, podremos definir Operadores y asignarles direcciones de correo electrónico, para así poder utilizarlos para las Notificaciones que necesitemos. Para configurar el Agente de SQL Server para el envío de Notificaciones de correo electrónico, deberemos habilitar el envío de correo electrónico con Database Mail y elegir el perfil de correo deseado. Para ello, mostraremos el diálogo de propiedades del Agente de SQL Server.

En la página Alert System, marcaremos la opción Enable mail profile. Seguidamente especificaremos Database Mail en el desplegable Mail system, y especificaremos el perfil de correo deseado en el desplegable Mail profile. Click OK para continuar.

En la página Alert System, marcaremos la opción Enable mail profile. Seguidamente especificaremos Database Mail en el desplegable Mail system, y especificaremos el perfil de correo deseado en el desplegable Mail profile. Click OK para continuar.

Muy importante: Una vez configurado el Agente de SQL Server para utilizar un perfil de Database Mail para el envío de correo electrónico, deberemos reiniciar el Agente de SQL Server para que los cambios tomen efecto. Esto podemos hacerlo directamente desde el SQL Server Management Studio (SSMS), utilizando la opción Restart del menú contextual del SQL Server Agent.

Muy importante: Una vez configurado el Agente de SQL Server para utilizar un perfil de Database Mail para el envío de correo electrónico, deberemos reiniciar el Agente de SQL Server para que los cambios tomen efecto. Esto podemos hacerlo directamente desde el SQL Server Management Studio (SSMS), utilizando la opción Restart del menú contextual del SQL Server Agent.

Se nos solicitará confirmación para el reinicio del Agente de SQL Server. Click Yes para continuar.

Se nos solicitará confirmación para el reinicio del Agente de SQL Server. Click Yes para continuar.

Ahora que ya hemos configurado el Agente de SQL Server para el envío de correo electrónico con Database Mail, estamos en situación de poder crear Operadores. Para ello, utilizaremos la opción New Operator del menú contextual del elemento SQL Server Agent – Operators.

Ahora que ya hemos configurado el Agente de SQL Server para el envío de correo electrónico con Database Mail, estamos en situación de poder crear Operadores. Para ello, utilizaremos la opción New Operator del menú contextual del elemento SQL Server Agent – Operators.

En la pantalla New Operator, especificaremos al menos un nombre y una dirección de correo electrónico. Un detalle interesante, es que podemos especificar múltiples direcciones de correo electrónico si las separamos con punto y coma (;). De este modo, si deseamos notificar a varias personas de la ejecución de un Job, podremos utilizar este truco, ya que sólo se puede especificar un único Operador para la notificación de cada Job. Click OK para continuar.

En la pantalla New Operator, especificaremos al menos un nombre y una dirección de correo electrónico. Click OK para continuar.

Realizado esto, estamos en situación de poder editar las propiedades de los Jobs que deseemos configurar para que notifiquen por correo electrónico a su finalización.

Realizado esto, estamos en situación de poder editar las propiedades de los Jobs que deseemos configurar para que notifiquen por correo electrónico a su finalización.

En el diálogo de Propiedades del Job, en la página Notifications, marcaremos la opción E-mail, especificaremos el Operador al que deseamos que se notifique por correo electrónico, y especificaremos también en qué casos deseamos que se realice la notificación (si finaliza con éxito, con fallo, o en ambos casos). Click OK.

En el diálogo de Propiedades del Job, en la página Notifications, marcaremos la opción E-mail, especificaremos el Operador al que deseamos que se notifique por correo electrónico, y especificaremos también en qué casos deseamos que se realice la notificación (si finaliza con éxito, con fallo, o en ambos casos). Click OK.

En nuestro caso, hemos configurado el Job para que notifique enviando un correo electrónico cuando finalice la ejecución del mismo, independientemente de si finaliza con éxito o error. Para probarlo, ejecutamos manualmente el Job.

En nuestro caso, hemos configurado el Job para que notifique enviando un correo electrónico cuando finalice la ejecución del mismo, independientemente de si finaliza con éxito o error. Para probarlo, ejecutamos manualmente el Job.

Efectivamente, una vez ha finalizado la ejecución del Job, el correo electrónico ha sido enviado satisfactoriamente.

Efectivamente, una vez ha finalizado la ejecución del Job, el correo electrónico ha sido enviado satisfactoriamente.

Hasta aquí llega el presente artículo, tercero y último de la serie acerca de Database Mail en SQL Server 2008 R2.

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

 


[Fecha del Artículo (UTC): 05/12/2011]
[Autor: GuilleSQL]


Comentarios

Chitahi - 23/04/2013 (UTC)
Hola Guille, es un placer contactarte despues de varios años, estoy trabajando con SQL SERVER 2008 R2 y tratando de configurar el correo electronico he seguido tus pasos para la configuración pero no logro que el mensaje salga. he realizado una prueba con Outlook y tengo respuesta.
Te muestre el siguiente mensaje que me arroja el log de registro de correo electronico de base de datos.

Mensaje
No se pudo enviar el mensaje de correo a los destinatarios a causa de un error del servidor de correo. (Enviando mensaje de correo electrónico utilizando la cuenta 12 (2013-04-20T14:54:28). Mensaje de excepción: No se puede conectar con el servidor de correo. (El nombre solicitado es válido pero no se encontraron datos del tipo solicitado).
)


Agradecería tu gran ayuda. Bendiciones.



Escribir un Comentario

Para poder escribir un comentario, debe Iniciar Sesión con un usuario.

Si no dispone de un usuario, puede Registrarse y hacerse miembro.

Si dispone de un usuario, pero no recuerda sus credenciales de acceso, puede Restablecer su Contraseña.

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

Enero de 2017 (3)
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)






Esta información se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho.
This information is provided "AS IS" with no warranties, and confers no rights.

Copyright © 2007 GuilleSQL, todos los derechos reservados.
GuilleSQL.com y GuilleSQL.net son también parte de Portal GuilleSQL.

Visitas recibidas (Page Loads) en GuilleSQL (fuente: StatCounter):

screen resolution stats
Visitas