Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Datenbank-E-Mail in SQL Server (T-SQL) aktivieren

SQL Server verfügt über eine Datenbank-E-Mail-Option, mit der Sie E-Mails vom Datenbankserver senden können.

Beispielsweise können Sie Benachrichtigungen erhalten, wenn SQL Server-Agent-Jobs ausgeführt werden oder fehlschlagen oder wenn ein Fehler mit hohem Schweregrad auftritt usw.

Wenn Datenbank-E-Mail nicht konfiguriert ist

In SQL Server wird E-Mail durch Ausführen von sp_send_dbmail gesendet gespeicherte Prozedur in der msdb Datenbank.

Hier ist ein Beispiel:

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';

Dies setzt jedoch voraus, dass SQL Server zum Senden von E-Mails konfiguriert ist.

Wenn Sie versuchen, E-Mails von SQL Server zu senden, aber eine Fehlermeldung wie die folgende erhalten, bedeutet dies, dass Datenbank-E-Mail derzeit nicht aktiviert ist.

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.

Datenbank-E-Mail-XPs aktivieren

Bevor Sie mit dem Senden von E-Mails vom Server beginnen, müssen Sie sicherstellen, dass Sie Database Mail XPs aktiviert haben.

Dies ist ziemlich einfach (obwohl Microsoft empfiehlt, dass erweiterte Optionen wie diese nur von einem erfahrenen Datenbankadministrator oder zertifizierten SQL Server-Techniker geändert werden sollten).

So aktivieren Sie Database Mail XPs:

EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO

Ergebnis:

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

Erstellen Sie ein E-Mail-Konto, Profil usw.

Datenbank-E-Mail wird über ein Profil und nicht direkt über ein Benutzerkonto gesendet.

Um E-Mails mit Datenbank-E-Mail zu senden, müssen Sie ein Datenbank-E-Mail-Konto und ein Datenbank-E-Mail-Profil erstellen, das Konto zum Profil hinzufügen und dann einem Benutzer Zugriff auf dieses Profil gewähren. Der Benutzer muss sich in der msdb befinden Datenbank.

Der T-SQL-Code dafür könnte in etwa so aussehen:

-- 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;

Sie müssen die verschiedenen Details durch Ihre eigenen ersetzen. Dies setzt auch voraus, dass Sie einen funktionierenden Mailserver angeben.

Sobald Sie das getan haben, sollten Sie in der Lage sein, E-Mails mit msdb.dbo.sp_send_dbmail zu senden gespeicherte Prozedur.