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

Erstellen eines öffentlichen Standardprofils für Datenbank-E-Mail in SQL Server (T-SQL)

Wenn Sie den sp_send_dbmail verwenden gespeicherte Prozedur zum Senden von E-Mails in SQL Server verwenden, würden Sie normalerweise den @profile_name einfügen Argument, um anzugeben, welches Profil verwendet werden soll.

Wenn Sie dieses Argument jedoch weglassen, wird sp_send_dbmail verwendet das standardmäßige private Profil für den aktuellen Benutzer. Wenn der Benutzer kein standardmäßiges privates Profil hat, sp_send_dbmail verwendet das standardmäßige öffentliche Profil für msdb Datenbank.

Wenn nichts davon konfiguriert ist, erhalten Sie die folgende Fehlermeldung:

Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112
No global profile is configured. Specify a profile name in the @profile_name parameter.

Wenn Sie diesen Fehler erhalten, haben Sie grundsätzlich drei Möglichkeiten:

  • Geben Sie an, welches Profil verwendet werden soll, indem Sie @profile_name angeben Argument beim Aufruf von sp_send_dbmail Verfahren.
  • Erstellen Sie ein standardmäßiges privates Profil für den aktuellen Benutzer.
  • Erstellen Sie ein öffentliches Profil für msdb Datenbank.

Dieser Artikel enthält ein Beispiel für die dritte Option:Erstellen Sie ein öffentliches Profil für msdb Datenbank.

Beispiel

Hier ist ein Beispiel, das den Prozess der Erstellung eines Datenbank-E-Mail-Profils, der Erstellung eines Datenbank-E-Mail-Kontos, des Hinzufügens des Kontos zum Profil und des anschließenden Gewährens des öffentlichen Zugriffs auf dieses Profil durchläuft.

-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Public Profile',  
    @description = 'Public Profile for emails.'; 

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_id = 1,
    @account_name = 'DB Public',  
    @description = 'Public account for emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Public Mailer',  
    @mailserver_name = 'smtp.example',
    @port = 587;

-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Public Profile',  
    @account_name = 'DB Public',  
    @sequence_number = 1;

-- Grant the public principal access to the profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;

Die letzte Zeile ist eigentlich der Teil, der es zum standardmäßigen öffentlichen Profil macht.

Durch die Verwendung von @is_default = 1 , lege ich dieses Profil als öffentliches Standardprofil fest. Wenn ich @is_default = 0 verwendet hätte stattdessen wäre es nicht das standardmäßige öffentliche Profil.

Um ein Profil öffentlich zu machen, geben Sie eine @principal_id an von 0 oder ein @principal_name von public . Ein öffentliches Profil steht allen Benutzern in der msdb zur Verfügung Datenbank (obwohl Benutzer auch Mitglied von DatabaseMailUserRole sein müssen um sp_send_dbmail auszuführen ).

Beachten Sie, dass es nur ein öffentliches Standardprofil geben kann.

Vorhandenes Profil aktualisieren

Wenn Sie bereits ein öffentliches Profil haben, aber es nicht das standardmäßige öffentliche Profil ist, können Sie sysmail_update_principalprofile_sp verwenden um das zu ändern.

Beispiel:

EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;