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

Habilitar o Database Mail no SQL Server (T-SQL)


O SQL Server tem uma opção de correio de banco de dados que você pode usar para enviar mensagens do servidor de banco de dados.

Por exemplo, você pode receber notificações quando os trabalhos do SQL Server Agent terminarem de ser executados ou falharem, ou quando houver um erro de alta gravidade etc.

Quando o Database Mail não está configurado


No SQL Server, o email é enviado executando o comando sp_send_dbmail procedimento armazenado no msdb base de dados.

Aqui está um exemplo:
EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Your favorite SQL Server Agent job just failed',  
    @subject = 'SQL Server Agent Job: FAILED';

No entanto, isso pressupõe que o SQL Server esteja configurado para enviar emails.

Se você tentar enviar emails do SQL Server, mas receber um erro como o seguinte, significa que você não tem o Database Mail habilitado no momento.
Msg 15281, Level 16, State 1, Procedure msdb.dbo.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', search for 'Database Mail XPs' in SQL Server Books Online.

Ativar XPs do Database Mail


Antes de começar a enviar e-mails do servidor, você precisa garantir que os XPs do Database Mail estejam ativados.

Isso é muito fácil de fazer (embora a Microsoft recomende que opções avançadas como essa sejam alteradas apenas por um administrador de banco de dados experiente ou técnico certificado do SQL Server).

Veja como habilitar XPs do Database Mail:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO

Resultado:
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
Commands completed successfully.
Commands completed successfully.

Crie uma conta de e-mail, perfil etc.


O Database Mail é enviado por meio de um perfil, em vez de uma conta de usuário diretamente.

Para enviar e-mail com o Database Mail, você precisa criar uma conta do Database Mail, um perfil do Database Mail, adicionar a conta ao perfil e conceder a um usuário acesso a esse perfil. O usuário precisa estar no msdb base de dados.

O código T-SQL para fazer isso pode ser algo assim:
-- Switch to the msdb database
USE msdb;

-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp  
    @account_name = 'DB Admin',  
    @description = 'Mail account for admin emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Automated Mailer',  
    @mailserver_name = 'smtp.example.com',
    @port = 25;  
  
-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Admin Profile',  
    @description = 'Profile for admin emails.';  
  
-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Admin Profile',  
    @account_name = 'DB Admin',  
    @sequence_number = 1;
  
-- Grant the msdb user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Admin Profile',
    @principal_name = 'Marge',
    @is_default = 1;

Você precisará substituir os vários detalhes pelos seus. Isso também pressupõe que você especifique um servidor de correio que funcione.

Depois de fazer isso, você poderá enviar e-mails com o msdb.dbo.sp_send_dbmail procedimento armazenado.