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

Utilizar Database Mail en SQL Server 2008 R2.docx

Embed Size (px)

Citation preview

Page 1: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 2: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 3: Utilizar Database Mail en SQL Server 2008 R2.docx

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 TSQLEXEC msdb.dbo.sp_send_dbmail@profile_name = 'GuilleSQL',@recipients = '[email protected]',@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 queryEXEC msdb.dbo.sp_send_dbmail@profile_name = 'GuilleSQL',@recipients = '[email protected]',@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'

Page 4: Utilizar Database Mail en SQL Server 2008 R2.docx

-- Sending HTML email from TSQLEXEC msdb.dbo.sp_send_dbmail@profile_name = 'GuilleSQL',@recipients = '[email protected]',@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.

Page 5: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 6: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 7: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 8: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 9: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 10: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 11: Utilizar Database Mail en SQL Server 2008 R2.docx

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.

Page 12: Utilizar Database Mail en SQL Server 2008 R2.docx

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

Page 13: Utilizar Database Mail en SQL Server 2008 R2.docx

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.