Когато използвате sp_send_dbmail
съхранена процедура за изпращане на имейли в SQL Server, обикновено включвате @profile_name
аргумент, за да посочите кой профил да използвате.
Ако обаче пропуснете този аргумент, sp_send_dbmail
ще използва частния профил по подразбиране за текущия потребител. Ако потребителят няма частен профил по подразбиране, sp_send_dbmail
ще използва публичния профил по подразбиране за msdb
база данни.
Ако нито едно от тях не е конфигурирано, ще получите следната грешка:
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.
Ако получавате тази грешка, основно имате три опции:
- Посочете кой профил да използвате, като включите
@profile_name
аргумент при извикване наsp_send_dbmail
процедура. - Създайте частен профил по подразбиране за текущия потребител.
- Създайте публичен профил за
msdb
база данни.
Тази статия предоставя пример за третата опция:създайте публичен профил за msdb
база данни.
Пример
Ето пример, който минава през процеса на създаване на профил на Database Mail, създаване на акаунт в Database Mail, добавяне на акаунта към профила, след което предоставяне на публичен достъп до този профил.
-- 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;
Последният ред всъщност е частта, която го прави публичен профил по подразбиране.
С помощта на @is_default = 1
, задавам този профил като обществен профил по подразбиране. Ако използвах @is_default = 0
вместо това няма да е общественият профил по подразбиране.
За да направите профил публичен, посочете @principal_id
от 0
или @principal_name
на public
. Публичният профил е достъпен за всички потребители в msdb
база данни (въпреки че потребителите трябва също да са членове на DatabaseMailUserRole
за изпълнение на sp_send_dbmail
).
Имайте предвид, че може да има само един обществен профил по подразбиране.
Актуализиране на съществуващ профил
Ако вече имате публичен профил, но това не е общественият профил по подразбиране, можете да използвате sysmail_update_principalprofile_sp
за да промените това.
Пример:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;