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