segunda-feira, 29 de março de 2010

Configurando o Database Mail

Os  problemas que enfrentamos com o DataBase Mail nas versões 7.0 e 2000 do Sql Server , não existem mais. SQL Server 2005 e 2008 agora oferecem suporte  ao SMTP, oferecendo mais confiabilidade ao processo de envio de e-mails através do Sql Server.Através deste artigo, vpou demonstrar em detalhes como configurar o DataBase Mail no Sql Server 2005. No Sql Server 2008 o processo é idêntico, com algumas telas levemente diferentes, mas em essência o mesmo processo.
Database Mail, é composto de quatro componentes:

1. Configuration Component
O Configuration Component tem dois sub-componentes, um deles é o DataBase Mail Account que contém informações como a conta SMTP (servidor, usuário e senha) que será utilizada para o envio das mensagens.

O segundo sub-componente do Configuration Component, é o Database Mail Profile. Um peffil do Database Mail profile pode sere público, ou seja, menbros do DatabaseMailUserRole no MSDB podem mandar emails através desta conta.

2. Messaging Component

O Messaging Component é composto basicamente de todos os componentes relacionados ao envio de emails relacionados instalados no MSDB.

3. Executável do DataBase Mail

O Database Mail usa o executável DatabaseMail90.exe.

4. Log e Auditoria

Os eventos disparados através do DataBase Mail podem ser listados através de querys a view sysmail_event_log.

Configurando o DataBase Mail

  •  Passo 1
Primeiramente devemos habilitar a função DataBase Mail na instância onde queremos executá-lo. Podemos fazer através de scripts, usando a proc sp_configure:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'Database Mail XPs',1
--go
--sp_configure 'SQL Mail XPs',0
go
reconfigure
go

Ou através do Sql Server Surface Area Configuration


  • Passo 2
O Database Account pode ser habilitado através da proc sysmail_add_account. Neste artigo, utilizaremos um servidor fictício.Importante lembrar, que o servidor de email que será usado, deve aceitar relay.

EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'TSQLMASTER',
    @description = 'Conta de testes do Database Mail',
    @email_address = 'tsqlmaster@tsqlmaster.net',
    @display_name = 'tsqlmaster',
    @username='tsqlmaster@tsqlmaster.net',
    @password='123456',
    @mailserver_name = 'mail.tsqlmaster.net'

  • Passo 3
Agora precisamos criar um mail profile, e faremos isso usando a proc sysmail_add_profile_sp.

EXECUTE msdb.dbo.sysmail_add_profile_sp
       @profile_name = 'MeuPerfil',
       @description = 'Perfil usado no Database Mail'
  • Passo 4
Agora vamos relacionar o nosso perfil a conta de e-mail criados nos passos anteriores.

EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'MeuPerfil',
    @account_name = 'TSQLMASTER,
    @sequence_number = 1
  • Passo 5
 Agora, use a proc sysmail_add_principalprofile para conceder ao Database Mail Profile, acesso ao msdb public database role, e fazer deste perfil o padrão do DataBase Mail.

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'MeuPerfil',
    @principal_name = 'public',
    @is_default = 1 ;

  • Passo 6
Agora, vamos testar o envio de emails através do SQL Server:
declare @body1 varchar(100)
set @body1 = 'Server :'+@@servername+ ' Meu primeiro email através do banco '

EXEC msdb.dbo.sp_send_dbmail @recipients='admin@tsqlmaster.net',
    @subject = 'Teste de email',
    @body = @body1,
    @body_format = 'HTML

O Sql Server apresentará a seguinte mensagem:
Se tudo correr como esperado, em alguns minutos você deverá receber a mensagem de teste. Porém se você não executou as configurações do passo 1, poderá receber a mensagem:

Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of
component 'Database Mail XPs' because this component is turned off as part of
the security configuration for this server. A system administrator can enable
the use of 'Database Mail XPs' by using sp_configure. For more information
about enabling 'Database Mail XPs', see "Surface Area Configuration"
in SQL Server Books Online

Ou se a porta 25 estiver bloqueada no servidor onde a instância está sendo executada, você poderá observar o seguinte erro no Database Mail Log history:


Assegure que a porta 25 está desbloqueada:

Alternativamente, você pode revisar e alterar as configurações de perfil e de conta do Database Mail através do Management Studio:
O Log do DataBase Mail pode ser visto através da query:
SELECT * FROM msdb.dbo.sysmail_event_log

Nenhum comentário:

Postar um comentário

Leave your comment here!