Kiedy używasz sp_send_dbmail procedura składowana do wysyłania wiadomości e-mail w SQL Server, zwykle zawiera @profile_name argument, aby określić, którego profilu użyć.
Jeśli jednak pominiesz ten argument, sp_send_dbmail użyje domyślnego profilu prywatnego dla bieżącego użytkownika. Jeśli użytkownik nie ma domyślnego profilu prywatnego, sp_send_dbmail użyje domyślnego profilu publicznego dla msdb baza danych.
Jeśli żadna z tych opcji nie zostanie skonfigurowana, otrzymasz następujący błąd:
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.
Jeśli otrzymujesz ten błąd, zasadniczo masz trzy opcje:
- Określ, którego profilu chcesz użyć, dołączając
@profile_nameargument podczas wywoływaniasp_send_dbmailprocedura. - Utwórz domyślny prywatny profil dla bieżącego użytkownika.
- Utwórz profil publiczny dla
msdbbaza danych.
Ten artykuł zawiera przykład trzeciej opcji:utwórz profil publiczny dla msdb baza danych.
Przykład
Oto przykład, który przechodzi przez proces tworzenia profilu poczty bazy danych, tworzenia konta poczty bazy danych, dodawania konta do profilu, a następnie przyznawania publicznego dostępu do tego profilu.
-- 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; Ostatnia linia jest w rzeczywistości częścią, która sprawia, że jest to domyślny profil publiczny.
Używając @is_default = 1 , ustawiam ten profil jako domyślny profil publiczny. Gdybym użył @is_default = 0 zamiast tego nie byłby to domyślny profil publiczny.
Aby ustawić profil jako publiczny, określ @principal_id z 0 lub @principal_name z public . Profil publiczny jest dostępny dla wszystkich użytkowników w msdb baza danych (chociaż użytkownicy muszą być również członkami DatabaseMailUserRole wykonać sp_send_dbmail ).
Pamiętaj, że może istnieć tylko jeden domyślny profil publiczny.
Zaktualizuj istniejący profil
Jeśli masz już profil publiczny, ale nie jest to domyślny profil publiczny, możesz użyć sysmail_update_principalprofile_sp by to zmienić.
Przykład:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;