sql >> Base de Datos >  >> RDS >> Sqlserver

Configuración del correo electrónico de la base de datos en SQL Server

SQL Server Database Mail se introdujo en SQL Server 2005. Database Mail es un componente que puede enviar correos electrónicos utilizando SQL Server Engine. Con el Correo electrónico de base de datos, un administrador o un desarrollador puede enviar resultados de consultas a un usuario final. Los DBA pueden configurarlo para recibir alertas y notificaciones por correo electrónico. Database Mail utiliza SMTP (Protocolo simple de transferencia de correo) para entregar correos electrónicos a los destinatarios.

En este artículo, demostraré cómo configurar el correo de la base de datos de SQL Server.

Requisitos previos para habilitar el Correo electrónico de base de datos

Para habilitar la función de correo de la base de datos, se requieren los siguientes requisitos previos:

  1. Se debe habilitar Service Broker para la base de datos MSDB.
  2. El servicio del Agente SQL Server debe estar ejecutándose.

El agente de servicios debe estar habilitado

El correo de base de datos requiere que el agente de servicio ponga en cola los correos electrónicos. Si el intermediario de servicios está deshabilitado, el correo de la base de datos no puede entregar los mensajes del intermediario de servicios y permanece en la cola del intermediario de servicios.
Para verificar que el intermediario de servicios está habilitado, ejecute la siguiente consulta:

USE master 
go 

SELECT database_id AS 'Database ID', 
       NAME        AS 'Database Name', 
       CASE 
         WHEN is_broker_enabled = 0 THEN 'Service Broker is disabled.' 
         WHEN is_broker_enabled = 1 THEN 'Service Broker is Enabled.' 
       END         AS 'Service Broker Status' 
FROM   sys.databases 
WHERE  NAME = 'msdb.'

El resultado es el siguiente:

Si el intermediario de servicios en la base de datos MSDB está deshabilitado, ejecute las siguientes consultas en secuencia para habilitar el intermediario de servicios:

Use master
go
alter database [MSDB] set single_user with rollback immediate
GO
alter database [MSDB] set Enable_Broker
GO
alter database [MSDB] set multi_user with rollback immediate
GO

El servicio del Agente SQL Server debe estar ejecutándose

Correo electrónico de base de datos envía correos electrónicos o mensajes mediante el servicio del agente de SQL Server. Si los servicios del agente no se están ejecutando, SQL Server no puede enviar correos electrónicos. Mientras el servicio de agente no se esté ejecutando, todos los mensajes se pondrán en cola y, cuando se inicie el servicio de agente, se entregarán todos los mensajes en cola.

Para verificar el estado del servicio del agente, ejecute el siguiente comando en el estudio de administración de SQL Server.

use master
go
EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'

El resultado es el siguiente:

Si el servicio del agente de SQL Server no se está ejecutando, debemos iniciarlo. Para iniciar el servicio del Agente SQL Server, abra Servicios , vaya a Panel de control>> Herramientas de administración>> Servicios . En la lista de servicios, busque Agente SQL Server. . Haga clic derecho en Agente SQL Server y seleccione Iniciar, como se muestra en la siguiente imagen:

Una vez que el agente de servicio esté habilitado y el servicio del Agente SQL iniciado, habilite el correo electrónico de la base de datos cambiando el parámetro de configuración de la instancia de la base de datos. De forma predeterminada, la función de correo electrónico de la base de datos no está habilitada. Debe habilitarse cambiando el valor de configuración de Database Mail XPs de 0 a 1. Nuevamente, los Database Mail XPs el parámetro es una opción avanzada; por lo tanto, antes de cambiarlo, cambie la Mostrar opción avanzada parámetro de configuración de 0 a 1.

Para habilitar el correo de la base de datos, ejecute las siguientes consultas en secuencia:

USE master
Go
EXEC sp_configure 'show advanced options', 1 --Enable advance option
Go
RECONFIGURE
Go
EXEC sp_configure 'Database Mail XPs,' 1 --Enable database Mail option
Go
RECONFIGURE
Go
EXEC sp_configure 'show advanced options', 0 --Disabled advanced option
Go
RECONFIGURE
Go

Una vez que el correo de base de datos esté habilitado, cree un perfil de correo de base de datos y una cuenta de correo de base de datos.

Configuración del correo electrónico de la base de datos

Una vez que se cumplan todos los requisitos previos, configure la cuenta de correo de la base de datos y el perfil de correo de la base de datos.

Creación de perfil y cuenta de correo de base de datos

Para configurar la cuenta de correo de la base de datos y el perfil de correo de la base de datos, abra SQL Server Management Studio. En el Explorador de objetos, expanda Administración y haga clic con el botón derecho en Configurar correo electrónico de base de datos , como se muestra en la siguiente imagen:

El asistente de configuración de correo de base de datos se abre el cuadro de diálogo. En el cuadro de diálogo, seleccione Configurar correo electrónico de base de datos realizando las siguientes tareas botón de radio y haga clic en Siguiente .

Ahora, en el Nuevo Perfil cuadro de diálogo, proporcione un nombre de perfil, una descripción que es opcional y haga clic en Agregar botón para crear una cuenta SMTP. Puede configurar varias cuentas SMTP. Cuando el correo de la base de datos envía un correo electrónico, utiliza la cuenta SMTP según la prioridad que figura en la cuenta SMTP. vista en cuadrícula. Si una cuenta falla al enviar un correo electrónico, el perfil usa la siguiente cuenta en la lista de prioridades. Ver la siguiente imagen:

En la Nueva cuenta de correo de la base de datos cuadro de diálogo, proporcione un Nombre de cuenta apropiado , Descripción (opcional), dirección de correo electrónico , Nombre para mostrar , Correo electrónico de respuesta (Opcional), servidor SMTP y Número de puerto . Si el servidor SMTP utiliza la autenticación SSL/TSL, marque El servidor requiere autenticación segura opción. En la lista de autenticación, seleccione un tipo de autenticación, que se utiliza para autenticar el servidor SMTP y haga clic en Aceptar. . Ver la siguiente imagen:

De vuelta en el Asistente de configuración de correo de la base de datos cuadro de diálogo, la cuenta SMTP aparecerá en las cuentas SMTP vista en cuadrícula. Ver la siguiente imagen:

Haga clic en Siguiente para configurar la seguridad del perfil de correo de la base de datos. Podemos configurar el perfil de correo electrónico de la base de datos ya sea privado o público. Solo un usuario o rol específico puede enviar correos electrónicos utilizando el uso de un perfil privado. Cualquier usuario o función de la base de datos puede enviar correos electrónicos utilizando el perfil público. Los usuarios deben crearse en la base de datos MSDB y esos usuarios deben ser miembros de un rol de base de datos llamado DatabaseMailUserRole enviar un correo electrónico. También podemos hacer que el perfil sea un perfil predeterminado. Una vez que se establezca la seguridad del perfil, haga clic en Siguiente para configurar el parámetro del sistema. Ver la siguiente imagen para ver la configuración:

En Configurar parámetros del sistema ventana, podemos establecer una cantidad de reintentos, tamaño máximo de archivo adjunto, lista de extensiones de archivo que está prohibido enviar como archivo adjunto. Ver la siguiente imagen:

Una vez configurado el parámetro del sistema, haga clic en Siguiente para revisar toda la configuración y la lista de acciones. Haga clic en Finalizar para completar la configuración del correo de la base de datos. Ver la siguiente imagen.

Una vez completada la configuración, haga clic en Cerrar para salir del asistente. Ver la siguiente imagen:

Crear y configurar el perfil y la cuenta del correo de la base de datos mediante T-SQL

También podemos configurar el perfil de correo de la base de datos y la cuenta de correo usando T-SQL. Para configurar el correo de la base de datos, el usuario debe tener el permiso de 'ejecución' en el siguiente procedimiento almacenado.

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

El Sysmail_add_account_sp El procedimiento crea una cuenta para el correo de la base de datos. Para crear una cuenta para el correo de la base de datos, ejecute el siguiente código:

EXEC msdb.dbo.sysmail_add_account_sp
    @account_name = 'Database Mail Default SMTP account'
  , @description = 'This account will be used to send database mail'
  , @email_address = '[email protected]'
  , @display_name = 'DBA Support'
  , @replyto_address = ''
  , @mailserver_type = 'SMTP'
  , @mailserver_name = '192.168.1.60'
  , @port = 25
Go

El Sysmail_add_profile_sp El procedimiento crea un perfil de correo de base de datos. Para crear un perfil de correo de base de datos, ejecute el siguiente código:

-- Create a Database Mail profile
EXEC msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'Database Mail Profile'
  , @description = 'This profile will be used to send database mail'
Go

El Sysmail_add_profileaccount_sp El procedimiento agrega la cuenta SMTP a un perfil de correo de base de datos. Para agregar una cuenta SMTP al perfil de correo de la base de datos, ejecute el siguiente código:

-- Add the account to the profile
EXEC msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'Database Mail Profile'
  , @account_name = 'Database Mail Default SMTP account'
  , @sequence_number = 1
Go

Envío de correo de prueba mediante correo electrónico de base de datos

Una vez configurado el correo de la base de datos, como mencioné anteriormente, para enviar un correo electrónico, se debe crear el usuario en la base de datos MSDB y este usuario debe ser miembro de DatabaseMailUserRole . Permite que un usuario de la base de datos envíe correos electrónicos utilizando el correo electrónico de la base de datos. El usuario de la base de datos debe tener un permiso de ejecución en los siguientes procedimientos almacenados, utilizados para administrar el correo de la base de datos:

  • sysmail_help_status_sp
  • sysmail_delete_mailitems_sp
  • sysmail_allitems
  • sysmail_event_log
  • sysmail_faileditems
  • archivos adjuntos de sysmail_mail
  • sysmail_sentitems
  • sysmail_unsentitems

Para enviar un correo electrónico de prueba mediante SSMS, abra SQL Server Management Studio>> Expanda Administración en Administración de SQL Server>> Haga clic con el botón derecho en Correo de base de datos y seleccione Enviar correo de prueba . Ver la siguiente imagen:

El Enviar correo electrónico de prueba se abre el cuadro de diálogo. En el perfil de correo de la base de datos desplegable, seleccione el nombre del perfil utilizado para enviar un correo electrónico (Perfil de correo de la base de datos), en el Para cuadro de texto, proporcione la dirección de correo electrónico del destinatario del correo electrónico y haga clic en Enviar correo de prueba . Ver la siguiente imagen:

También podemos enviar correos electrónicos utilizando el código T-SQL. Para ello, ejecute el siguiente script T-SQL:

use MSDB
go
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Database Mail Profile'
  , @recipients = '[email protected]'
  , @subject = 'Automated Test Results (Successful)'
  , @body = 'The stored procedure finished successfully.'
Go

Lista de tablas esenciales para comprobar el estado del correo electrónico

A continuación se muestra la lista de tablas que se utilizan para ver el correo de la base de datos de configuración, la cuenta de la base de datos y el estado del correo electrónico.

[identificación de la tabla=53 /]

Para ver el registro de correo de la base de datos, abra SQL Server Management Studio>> expanda Administración>> Haga clic derecho en Correo de base de datos y seleccione Ver registro de correo de la base de datos . Ver la siguiente imagen:

El Visor de archivos de registro Se abre el cuadro de diálogo, como se muestra en la siguiente imagen:

Descartar cuenta y perfil de correo de la base de datos

Para eliminar el perfil de Correo electrónico de base de datos, primero elimine el perfil de Correo electrónico de base de datos. Para ello, abra Configurar asistente de correo electrónico de base de datos. como se explica al principio del artículo. En el asistente, seleccione Administrar cuentas y perfiles de correo electrónico de la base de datos. y haga clic en Siguiente . Ver la siguiente imagen:

En Administrar perfiles y cuenta s, seleccione Ver cambios o eliminar un perfil existente y haga clic en Siguiente . Ver la siguiente imagen:

En Administrar perfil existente seleccione el nombre del perfil que desea eliminar del Nombre del perfil cuadro desplegable y haga clic en Eliminar y haga clic en Siguiente. Ver la siguiente imagen:

A continuación, la pantalla mostrará el resumen de la acción, revise el resumen y haga clic en Finalizar para dejar el perfil. Ver la siguiente imagen:

Después de eliminar el perfil de correo de la base de datos, elimine la cuenta de la base de datos. Para ello, en Abrir asistente de configuración de correo electrónico de base de datos>> seleccione Administrar cuentas de correo de base de datos y perfil>> Elija Ver, cambiar o eliminar una cuenta existente opción y haga clic en Siguiente. Ver la siguiente imagen:

En Administrar cuenta existente página, desde el Nombre de la cuenta cuadro desplegable, seleccione el nombre de la cuenta que desea eliminar y haga clic en Eliminar botón, como se muestra en la siguiente imagen:

La siguiente pantalla mostrará el resumen de la acción, revise el resumen y haga clic en Finalizar para dar de baja la cuenta. Ver la siguiente imagen:

Eliminación de la cuenta y el perfil del correo de la base de datos mediante T-SQL

También puede eliminar la cuenta de correo de la base de datos y el perfil de correo de la base de datos ejecutando T-SQL Script. Para eliminar el perfil y la cuenta de la base de datos, ejecute el siguiente código:

IF EXISTS(SELECT * 
            FROM msdb.dbo.sysmail_profileaccount pa 
              INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id 
              INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id   
            WHERE p.name = 'Database Mail Profile' 
              AND a.name = 'Database Mail Default SMTP account') 
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name = 'Database Mail Profile',@account_name = 'Database Mail Default SMTP account' 
  END  
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE  name = 'Database Mail Default SMTP account') 
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = 'Database Mail Default SMTP account' 
  END 
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE  name = 'Database Mail Profile')  
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = 'Database Mail Profile' 
  END

Para verificar que el correo de la base de datos y la cuenta de la base de datos se hayan descartado, ejecute la siguiente consulta:

SELECT * 
            FROM msdb.dbo.sysmail_profileaccount pa 
              INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id 
              INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id   
            WHERE p.name = 'Database Mail Profile' 
              AND a.name = 'Database Mail Default SMTP account'

Resumen

En este artículo, he explicado:

  1. ¿Qué es el correo electrónico de base de datos y su finalidad?
  2. Requisitos previos para configurar el Correo electrónico de base de datos.
  3. Configure la cuenta de correo electrónico de la base de datos y el perfil del correo electrónico de la base de datos mediante el estudio de administración de SQL Server.
  4. Configure la cuenta de correo electrónico de la base de datos y el perfil del correo electrónico de la base de datos mediante T-SQL.
  5. Envíe un correo electrónico de prueba usando SSMS y T-SQL.
  6. Elimine con elegancia el perfil del Correo electrónico de la base de datos y la cuenta del Correo electrónico de la base de datos.