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.
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.
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.
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.
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.
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.
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 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.
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.