Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Configurando o Database Mail no SQL Server


O SQL Server Database Mail foi introduzido no SQL Server 2005. O Database Mail é um componente que pode enviar emails usando o SQL Server Engine. Usando o Database Mail, um administrador ou um desenvolvedor pode enviar a saída da consulta para um usuário final. Os DBAs podem configurá-lo para receber alertas e notificações por e-mail. O Database Mail usa SMTP (Simple Mail Transfer Protocol) para entregar emails aos destinatários.

Neste artigo, demonstrarei como configurar o SQL Server Database Mail.

Pré-requisitos para habilitar o Database Mail


Para habilitar o recurso de correio do banco de dados, são necessários os seguintes pré-requisitos:
  1. O Service Broker para o banco de dados MSDB deve estar ativado.
  2. O serviço SQL Server Agent deve estar em execução.

O Service Broker deve estar ativado


O Database Mail exige que o service broker enfileira os emails. Se o service broker estiver desabilitado, o correio do banco de dados não poderá entregar as mensagens do service broker e permanecerá na fila do service broker.
Para verificar se o service broker está habilitado, execute a seguinte 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.'

A saída tem a seguinte aparência:



Se o service broker no banco de dados MSDB estiver desabilitado, execute as seguintes consultas em sequência para habilitar o service broker:
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

O serviço do SQL Server Agent deve estar em execução


O Database Mail envia emails ou mensagens usando o serviço de agente do SQL Server. Se os serviços do agente não estiverem em execução, o SQL Server não poderá enviar emails. Enquanto o serviço do agente não estiver em execução, todas as mensagens serão enfileiradas e, quando o serviço do agente for iniciado, todas as mensagens enfileiradas serão entregues.

Para verificar o status do serviço do agente, execute o seguinte comando no SQL Server Management Studio.
use master
go
EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'

A saída tem a seguinte aparência:



Se o serviço do agente do SQL Server não estiver em execução, precisamos iniciá-lo. Para iniciar o serviço SQL Server Agent, abra Serviços , vá para Painel de Controle>> Ferramentas Administrativas>> Serviços . Na lista de serviços, procure SQL Server Agent . Clique com o botão direito do mouse em SQL Server Agent e selecione Iniciar como mostrado na imagem a seguir:



Depois que o agente de serviço estiver habilitado e o SQL Agent Service for iniciado, habilite o email do banco de dados alterando o parâmetro de configuração da instância do banco de dados. Por padrão, o recurso de e-mail do banco de dados não está habilitado. Ele deve ser ativado alterando o valor de configuração de Database Mail XPs de 0 a 1. Novamente, os Database Mail XPs parâmetro é uma opção avançada; portanto, antes de alterá-lo, altere a Mostrar opção avançada parâmetro de configuração de 0 a 1.

Para habilitar o correio de banco de dados, execute as seguintes consultas em sequência:
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

Depois que o Database Mail estiver habilitado, crie um perfil de correio do banco de dados e uma conta de correio do banco de dados.

Configurando o Database Mail


Depois que todos os pré-requisitos forem atendidos, configure a conta de correio do banco de dados e o perfil de correio do banco de dados.

Criando perfil e conta do Database Mail


Para configurar a conta de correio do banco de dados e o perfil de correio do banco de dados, abra o SQL Server Management Studio. No Pesquisador de Objetos, expanda Gerenciamento e clique com o botão direito do mouse em Configurar Database Mail , conforme mostrado na imagem a seguir:



O Assistente de configuração de correio de banco de dados caixa de diálogo é aberta. Na caixa de diálogo, selecione Configurar o Database Mail executando as seguintes tarefas botão de opção e clique em Avançar .



Agora, no Novo perfil caixa de diálogo, forneça um nome de perfil, uma descrição opcional e clique no botão Adicionar botão para criar uma conta SMTP. Você pode configurar várias contas SMTP. Quando o correio do banco de dados envia um e-mail, ele usa a conta SMTP com base na prioridade listada na conta SMTP visualização em grade. Se uma conta falhar ao enviar e-mail, o perfil usará a próxima conta na lista de prioridades. Veja a seguinte imagem:



Na Nova conta do Database Mail caixa de diálogo, forneça um Nome da conta apropriado , Descrição (opcional), Endereço de e-mail , Nome de exibição , Responder e-mail (Opcional), servidor SMTP e Número da porta . Se o servidor SMTP usa a autenticação SSL/TSL, marque O servidor requer autenticação segura opção. Na lista de autenticação, selecione um tipo de autenticação, usado para autenticar o servidor SMTP e clique em OK . Veja a seguinte imagem:



De volta ao Assistente de configuração de correio de banco de dados caixa de diálogo, a conta SMTP será listada em Contas SMTP visualização em grade. Veja a seguinte imagem:



Clique em Avançar para configurar a segurança do perfil de correio do banco de dados. Podemos configurar o perfil de e-mail do banco de dados privado ou público. Apenas um usuário ou função específica pode enviar e-mail usando o perfil privado. Qualquer usuário ou função do banco de dados pode enviar e-mail usando o perfil Público. Os usuários devem ser criados no banco de dados MSDB e esses usuários devem ser membros de uma função de banco de dados chamada DatabaseMailUserRole Enviar um email. Também podemos tornar o perfil como um perfil padrão. Depois que a segurança do perfil estiver definida, clique em Avançar para configurar o parâmetro do sistema. Veja a imagem a seguir para visualizar a configuração:



Em Configurar parâmetro do sistema janela, podemos definir um número de tentativas de repetição, tamanho máximo do arquivo de anexo, lista de extensões de arquivo que são proibidas de enviar como anexo. Veja a seguinte imagem:



Depois que o parâmetro do sistema for configurado, clique em Avançar para revisar toda a configuração e lista de ações. Clique em Concluir para concluir a configuração de correio do banco de dados. Veja a imagem a seguir.



Quando a configuração estiver concluída, clique em Fechar para sair do assistente. Veja a seguinte imagem:


Criando e configurando o perfil e a conta do Database Mail usando T-SQL


Também podemos configurar o perfil de e-mail do banco de dados e a conta de e-mail usando o T-SQL. Para configurar o correio do banco de dados, o usuário deve ter a permissão ‘executar’ no seguinte procedimento armazenado.
  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

O Sysmail_add_account_sp procedimento cria uma conta para o correio do banco de dados. Para criar uma conta para correio de banco de dados, execute o seguinte 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

O Sysmail_add_profile_sp procedimento cria um perfil de correio de banco de dados. Para criar um perfil de correio de banco de dados, execute o seguinte 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

O Sysmail_add_profileaccount_sp procedimento adiciona a conta SMTP a um perfil de correio de banco de dados. Para adicionar uma conta SMTP ao perfil de correio do banco de dados, execute o seguinte 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

Enviando e-mail de teste usando o Database Mail


Uma vez configurado o correio do banco de dados, como mencionei anteriormente, para enviar um email, o usuário deve ser criado no banco de dados MSDB e este usuário deve ser membro de DatabaseMailUserRole . Ele permite que um usuário de banco de dados envie e-mails usando o Database Mail. O usuário do banco de dados deve ter uma permissão de execução nos seguintes procedimentos armazenados, usados ​​para gerenciar o correio do banco de dados:
  • sysmail_help_status_sp
  • sysmail_delete_mailitems_sp
  • sysmail_allitems
  • sysmail_event_log
  • sysmail_faileditems
  • sysmail_mailattachments
  • sysmail_sentitems
  • sysmail_unsentitems

Para enviar um email de teste usando o SSMS, abra o SQL Server Management Studio>> Expanda Gerenciamento no SQL Server Management>> Clique com o botão direito do mouse em Database Mail e selecione Enviar e-mail de teste . Veja a seguinte imagem:



O Enviar e-mail de teste caixa de diálogo é aberta. No Perfil do Database Mail drop-down, selecione o nome do perfil usado para enviar um e-mail (Database Mail Profile), no Para caixa de texto, forneça o endereço de e-mail do destinatário do e-mail e clique em Enviar e-mail de teste . Veja a seguinte imagem:



Também podemos enviar e-mail usando o código T-SQL. Para fazer isso, execute o seguinte 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 tabelas essenciais para verificar o status do e-mail


A seguir está a lista de tabelas, usadas para visualizar o email do banco de dados de configuração, a conta do banco de dados e o status do email.

[ID da tabela=53 /]

Para visualizar o log de email do banco de dados, abra o SQL Server Management studio>> expanda Gerenciamento>> Clique com o botão direito do mouse em E-mail do banco de dados e selecione Exibir log do Database Mail . Veja a seguinte imagem:



O Visualizador do arquivo de registro caixa de diálogo é aberta, conforme mostrado na imagem a seguir:


Desativando conta e perfil do Database Mail


Para descartar o perfil do Database Mail, primeiro elimine o perfil do Database Mail. Para fazer isso, abra Configure Database Mail Wizard, como explicado no início do artigo. No assistente, selecione Gerenciar conta e perfis do Database Mail e clique em Avançar . Veja a seguinte imagem:



Na página Gerenciar perfis e conta s, selecione Visualizar alteração ou excluir um perfil existente e clique em Avançar . Veja a seguinte imagem:



No Gerenciar perfil existente página, selecione o nome do perfil que você deseja excluir do Nome do perfil caixa suspensa e clique no botão Excluir botão e clique em Avançar. Veja a seguinte imagem:



Em seguida, a tela exibirá a ação de verão, revise o resumo e clique em Concluir para largar o perfil. Veja a seguinte imagem:



Depois de descartar o perfil de correio do banco de dados, elimine a conta do banco de dados. Para fazer isso, em Abrir assistente de configuração do Database Mail>> selecione Gerenciar contas e perfil do Database Mail>> Escolha Visualizar, alterar ou excluir uma conta existente opção e clique em Avançar. Veja a seguinte imagem:



Em Gerenciar conta existente página, do Nome da conta caixa suspensa, selecione o nome da conta que você deseja excluir e clique no botão Excluir botão, como mostra a imagem a seguir:



A tela a seguir exibirá a ação de verão, revise o resumo e clique em Concluir para largar a conta. Veja a seguinte imagem:


Descartando a conta e o perfil do Database Mail usando T-SQL


Você também pode descartar a conta de correio do banco de dados e o perfil de correio do banco de dados executando o script T-SQL. Para descartar o perfil e a conta do banco de dados, execute o seguinte 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 se o email do banco de dados e a conta do banco de dados foram descartados, execute a seguinte 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'

Resumo


Neste artigo, expliquei:
  1. O que são Database Mail e sua finalidade?
  2. Pré-requisitos para configurar o Database Mail.
  3. Configure a conta do Database Mail e o perfil do Database Mail usando o SQL Server Management Studio.
  4. Configure a conta do Database Mail e o perfil do Database Mail usando T-SQL.
  5. Enviar e-mail de teste usando SSMS e T-SQL.
  6. Descarte o perfil do Database Mail e a conta do Database Mail com elegância.