Když použijete sp_send_dbmail
uloženou proceduru pro odesílání e-mailů na SQL Server, obvykle zahrnete @profile_name
argument k určení, který profil se má použít.
Pokud však tento argument vynecháte, sp_send_dbmail
použije výchozí soukromý profil pro aktuálního uživatele. Pokud uživatel nemá výchozí soukromý profil, sp_send_dbmail
použije výchozí veřejný profil pro msdb
databáze.
Pokud není nakonfigurováno žádné z těchto nastavení, zobrazí se následující chyba:
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.
Pokud se vám zobrazuje tato chyba, máte v zásadě tři možnosti:
- Upřesněte, který profil chcete použít, a to uvedením
@profile_name
argument při volánísp_send_dbmail
postup. - Vytvořte výchozí soukromý profil pro aktuálního uživatele.
- Vytvořte veřejný profil pro
msdb
databáze.
Tento článek poskytuje příklad třetí možnosti:vytvořit veřejný profil pro msdb
databáze.
Příklad
Zde je příklad, který prochází procesem vytvoření profilu Database Mail, vytvoření účtu Database Mail, přidání účtu do profilu a poté udělení veřejného přístupu k tomuto 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 = '[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;
Poslední řádek je ve skutečnosti část, která z něj dělá výchozí veřejný profil.
Pomocí @is_default = 1
, nastavuji tento profil jako výchozí veřejný profil. Pokud bych použil @is_default = 0
místo toho by to nebyl výchozí veřejný profil.
Chcete-li profil zveřejnit, zadejte @principal_id
z 0
nebo @principal_name
z public
. Veřejný profil je dostupný všem uživatelům v msdb
databáze (ačkoli uživatelé musí být také členy DatabaseMailUserRole
spustit sp_send_dbmail
).
Upozorňujeme, že může existovat pouze jeden výchozí veřejný profil.
Aktualizovat stávající profil
Pokud již máte veřejný profil, ale není to výchozí veřejný profil, můžete použít sysmail_update_principalprofile_sp
to změnit.
Příklad:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;