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_nameangeben Argument beim Aufruf vonsp_send_dbmailVerfahren. - Erstellen Sie ein standardmäßiges privates Profil für den aktuellen Benutzer.
- Erstellen Sie ein öffentliches Profil für
msdbDatenbank.
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 = 'example@sqldat.com',
@replyto_address = 'example@sqldat.com',
@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;