O SQL Server disponibiliza um mecanismo para enviar e-mail da edição 2005 em diante (substituindo SQL Mail), este recurso é muito útil para notificar sobre o estado da instancia do SQL Server. Porem não recomendo utilizar com um volume muito grande de envios (para fazer e-mail marketing, por exemplo).
Para utilizar este recurso, devemos verificar o status de alguns itens:
Verificando status
Primeiro devemos verificar se o SQL Agent, está rodando. Para isso execute:
USE [master] GO EXEC xp_servicecontrol 'QueryState', 'SQLServerAGENT';
Acima executamos a procedure “xp_servicecontrol”, para verificar o estado do serviço “SQLServerAGENT”.
Como podemos ver claramente acima, o serviço “SQLServerAGENT” está parado, nesse caso vamos abrir o “Prompt de comando” do windows como administrador e executar: net start “SQL Server Agent (MSSQLSERVER)”.
Para mais informação de como iniciar o serviço do SQL Agent via linha de comando consulte:
http://technet.microsoft.com/pt-br/library/ms175192(v=sql.105).aspx
Ou iniciar via interface:
http://technet.microsoft.com/pt-br/library/ms191454(v=sql.105).aspx.
O segundo item que devemos verificar é o recurso: “Service Broker”. O mecanismo de envio depende do recurso de enfileiramento de mensagens, ou seja, precisamos verificar se o “Service Broker” está ativo para o banco “msdb”. Para verificar devemos executar:
SELECT is_broker_enabled FROM sys.databases WHERE database_id = DB_ID('msdb');
Acima temos um “select” para verificar o valor da coluna “is_broker_enabled”. Caso o valor seja “1”, é porque está ativo, caso seja “0”, não está. Supondo que o recurso não esteja ativo execute o seguinte comando para habilitar:
ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Acima temos um comando para habilitar o “Service Broker” para o banco “msdb”. Para desabilitar troque “ENABLE_BROKER” por “DISABLE_BROKER”.
Em seguida, devemos habilitar o envio de e-mail no SQL Server, para isso execute o seguinte comando:
USE [master] GO EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GO
Acima estamos habilitando o envio de e-mail no SQL Server.
Configurando o envio
Primeiro vamos ver como criar as configurações via interface, de depois vamos ver via T-SQL.
A primeira coisa que devemos fazer é configurar o “Database Mail”, para isso devemos expandir “Gerenciamento” e abrir “Configure Database Mail”.
A primeira janela que irá aparecer será esta, clique em “Avançar”:
Na segunda tela deixe selecionado a opção “Instalar Database Mail executando as seguintes tarefas” e clique em avançar:
Dê um nome para o perfil e uma descrição para o mesmo, e clique em “Adicionar”:
Assim que você clicar em “Adicionar”, uma tela irá abrir, para que você configure os dados de acesso ao servidor de e-mail, neste exemplo vou configurar o servidor do gmail:
Dê “OK”, e clique em “Avançar” na tela anterior.
Na próxima janela podemos definir que o perfil criado é um perfil padrão, nesse caso quem utilizar o perfil, não precisará especificar o nome para utiliza-lo.
Clique em “Avançar”. Na próxima tela definimos alguns parâmetros, como:
* Quantidade de tentativas de envio de e-mail.
* Quantidade em segundos entre uma tentativa e outra, para envio de e-mail
* Tamanho máximo de arquivo anexo.
* Quais extensões são permitidas (separado por vírgula)
* Quantidade de em segundos que o mecanismo de envio permanecerá ativo com a fila vazia
* Nível de detalhamento do log de e-mail (mais abaixo mostro como visualizar os logs)
Clique em “Avançar” e finalmente em “Concluir”. Se tudo deu certo você deve ver esta tela:
Testando o envio
Para testar o envio de e-mail, devemos expandir “Gerenciamento” e abrir “Enviar Email de Teste”.
Na tela que abriu, você deve informar o e-mail de destino e clicar em “Enviar Email de Teste”, outra tela irá abrir, confirmando que a mensagem foi enfileirada.
Enviando e-mail via TSQL
Para enviar um e-mail via T-SQL devemos chamar a procedure “sp_send_dbmail” do banco “msdb”
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'PerfilPadrão', @recipients = 'andrebtoe@gmail.com', @subject = 'Título aqui', @body = 'Conteúdo aqui', @body_format = 'HTML';
Acima estamos estamos executando uma procedure para enviar o e-mai para “andrebtoe@gmail.com” utilizando o profiler “PerfilPadrão”. Por padrão o formato da mensagem é “TEXT”, mas podemos enviar o conteúdo da mensagem no formato HTML.
Visualizando os logs
Ver os logs é útil para descobrir uma falha de envio por exemplo. Podemos ver através da interface ou executando um simples “select”:
SELECT * FROM msdb.dbo.sysmail_event_log;
Acima temos os dados de logs do serviço de envio.
Também podemos visualizar os dados via interface, para isso devemos expandir “Gerenciamento” e abrir “Exeibir Log do Database Mail”:
Na segunda e última parte desse post, vamos ver mais recursos do Database Mail.
https://andrebtoe.com/2014/12/24/como-enviar-e-mail-no-sql-server-parte-2/
Espero que seja útil!
Até a próxima pessoal!
cara cade as imagens
de exemplo não esta aparecendo
Otimo post bem explicado acho que a referencia de umas imagens foram perdidas
Parabéns, muito bem explicado!
Muito Obrigado. Funciona direitinho. Bem explicado!