O Mágico SQL Server Agent – #2
Neste artigo, vamos falar sobre a configuração do Database Mail.
Ué!!!
Mas não estamos falando sobre SQL Server Agent???
Por que você eu vou falar sobre Database Mail???
Porque, para darmos os próximos passos, precisaremos ativar e criar um perfil no Database Mail, que possibilitará o envio de emails, diretamente pelo T-SQL e alertas do SQL Server Agent.
Mas, afinal, o que é o Database Mail?
Para quem utilizou o SQL Server nas versões 2000 ou anteriores, utilizaram o SQLMail, que era muito mais complicado, pois dependia da MAPI, e possuia várias limitações, entre elas:
- Não funcionava em cluster SQL Server, dependia da criação de uma conta no servidor de emails;
- Utilizava MAPI, que eram fornecidas por outros aplicativos, como o Outlook, por exemplo;
- Não reenviava emails que tiveram algum problema e não conseguiram ser enviados;
- Era tudo uma adaptação (gambiarra) pois não existiam versões do MAPI para o SQL Server.
Com o lançamento da versão 2015, o SQL Server passou a ter uma ferramenta de envio de emails, que basta configurar o servidor de envio, que tudo funciona “automagicamente”, de forma simples e muito mais rastreável, além de funcionar em instalações clusterizadas, da mesma forma que em uma instalação stand-alone.
Configuração de email do banco de dados
O Database Mail é desativado por default, por isso, você deve ativá-lo andes de poder utilizá-lo. Para efetuar os procedimentos descritos neste artigo, você deverá ser membro da Server Role sysadmin.
Ativando o Database Mail
A forma mais simples de ativar a utilização do Database Mail, é alterando as configurações da instância de SQL Server, utilizando a stored procedure de sistema sp_configure, conforme o script a seguir:
use master go -- Exibe as opções avançadas de configuração, -- desabilitado por default, por questões de segurança. exec sp_configure 'show advanced options', 1 reconfigure with override go -- Ativa as eXtended Procedures do Database Mail exec sp_configure 'Database Mail XPs', 1 reconfigure with override go -- Volta a esconder as opções avançadas de configuração, exec sp_configure 'show advanced options', 0 reconfigure with override go
Pronto, agora poderemos configurar as contas e os perfis do serviço d email do serviço de emails da sua instância.
Configurando o Database Mail
Utilizando o SSMS (Management Studio), expanda a opção Management da árvore principal da instância e clique com o botão direito (mágico) sobre a feature Database Mail, escolhendo Configure Database Mail, conforme a figura 2.1
No wizard que aparecerá, selecione a opção “Set up Database Mail by performing the following tasks:”, conforme apresento na figura 2.2.
Será apresentada uma nova janela com o nome “New Profile”, nesta janela, você devenomear o perfil de utilização e informar uma descrição da utilização deste perfil, conforme a figura 2.3. Particularmente, crio um perfil para cada tipo de email que desejo enviar, como por exemplo, realização de backups, ou execução de jobs, que pode ser de backup, mas como já existe um perfil específico para isso, utilizo o mais específico, desta forma, fica mais fácil criar regras no meu client de email (outlook), dando a devida importância para emails críticos, podendo desprezar os emails puramente informativos. Esta é uma política que eu adoto e não é obrigatória e, muito menos, a certa, é apenas uma forma que eu faço por ser mais cômodo.
Após definir nome e descrição do seu perfil, clique no botão Add, para criar as accounts (contas de email), que são as contas de email que vão efetuar os envios. A seguinte janela será apresentada:
Preencha os dados conforme apresentado na figura 2.4; lembre-se de colocar um nome bem sugestivo no Display Name, pois é este campo que aparecerá como remetente do email; confira, também, o nome ou IP e a porta do seu servidor de envio de emails e se precisa de autenticação SSL. Não esqueça de verificar se estas configurações estão liberadas no firewall e proxy.
Dependendo da configuração do email corporativo, a autenticação pode ser anônima, por Windows Authentication (neste caso a conta de serviço do SQL Server será utilizada) ou específica para o envio de email (Basic Authentication); ao final, clique em OK.
Se quiser, você pode criar novas contas em um profile, que, se a primeira não conseguir enviar o email, o Database Mail tentará emitir pelas outras, sequencialmente. Para o nosso exemplo, utilizaremos apenas uma conta, portanto, ao retornar à janela New Profile, clique em Next, na para apresentar a Janela Manage Profile Security, onde você poderá escolher se o profile criado será público, podendo ser utilizado por todos os usuários autorizados pela role DatabaseMailUserRole do banco msdb, ou privado, que será associado a um usuário único
Para o nosso propósito, deixaremos como um perfil público, conforme mostramos na figura abaixo.
Após marcar o profile criado na guia Public Profile, clique em next para configurar os parâmetros do Database Mail.
Nesta tela, embora não necessitemos de alteração para o nosso exemplo, os seguintes parâmetros poderão ser alterados:
- Account Retry Attempts – total de tentativas de envio que o Database mail deve realizar com cada conta configurada.
- Account Retry Delay – Tempo, em segundos, entre cada tentativa de reenvio.
- Maximum File Size – Tamanho máximo, em bytes, de arquivos em anexo no email. Este parâmetro deve ser compatível com a configuração do servidor SMTP.
- Prohibited Attachment File Extensions – Extensões de arquivos proibidas como anexos; cada extensão tem que estar separada por vírgula.
- Database Mail Executable Minimum Lifetime – Ao ser iniciado para um envio de email, o Database Mail ficará ativo por no mínimo o tempo, em segundos, configurado neste parâmetro. Isto evita ativar e desativar o Database Mail repetidas vezes, evitando sobrecarga no ambiente.
- Logging Level – Nível do log do Database Mail, podendo ser o Normal (somente erros), Extended (erros, alertas, e informações) ou Verbose (erros, alertas, informações, mensagens de sucesso, mensagens internas adicionais – só deve ser usada para troubleshooting.
Após a configuração destes parâmetros, será apresentada a tela de confirmação das configurações e o botão Finish será ativado. Confira se está tudo como deseja e clique em Finish. Neste momento, o processo de configuração será executado na instância e os erros, se ocorrerem,serão apresentados na tela seguinte.
Supondo que tudo deu certo, o Database Mail está configurado e pronto para usar.
Testando o Database Mail
Agora, com o ambiente configurado, vamos testar se tudo está funcionando. Clique com o botão direito em Database Mail e, no menu de contexto, selecione a opção Send Test E-Mail, conforme a figura 2.8.
Feito isso, a tela de envio de email de teste será apresentada:
Na tela, preencha o campo de destinatário (To) e, se quiser, altere os campos de Assunto (Subject) e do Corpo do email (Body). Estando tudo OK, clique em Send Test e-mail; automaticamente, a seguinte tela será apresentada. Abra sua caixa de email e verifique se o email chegou; se chegou, está tudo bem configurado, se não chegou, vamos descobrir o que pode ter ocorrido.
Verificando problemas de configuração e envio
Para resolver os problemas que, por ventura, o Database Mail venha a apresentar, a melhor forma de iniciar o troubleshooting, é vendo o log do Database Mail, para isso, liste o conteúdo da view msdb.dbo.sysmail_event_log, ou, pela interface gráfica, clique com o botão direito em Database Mail e selecione a opção View Database Mail Log. O conteúdo é o mesmo, só a forma de apresentação é diferente, mas não tem nenhum impacto na análise. Caso as mensagens de erro não sejam auto explicativas, o maravilhoso provérbio de Confúcio diz “Google is your friend!”. Não vou tratar de correção de erros do Database Mail nesta série de artigos, pois é um assunto muito extenso.
Pronto!!!
O Database Mail está configurado e você já possui um Job, então, o que falta?
Falta juntar os dois, para que sua vida fique mais tranquila!
Mas isso é material para um próximo artigo dessa série.