Quando você usa o
sp_send_dbmail
procedimento armazenado para enviar emails no SQL Server, você normalmente incluiria o @profile_name
argumento para especificar qual perfil usar. No entanto, se você omitir este argumento,
sp_send_dbmail
usará o perfil privado padrão para o usuário atual. Se o usuário não tiver um perfil privado padrão, sp_send_dbmail
usará o perfil público padrão para o msdb
base de dados. Se nenhum deles estiver configurado, você receberá o seguinte erro:
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.
Se você está recebendo este erro, você basicamente tem três opções:
- Especifique qual perfil usar, incluindo o
@profile_name
argumento ao chamar osp_send_dbmail
procedimento. - Crie um perfil privado padrão para o usuário atual.
- Crie um perfil público para o
msdb
banco de dados.
Este artigo fornece um exemplo da terceira opção:crie um perfil público para o
msdb
base de dados. Exemplo
Aqui está um exemplo que passa pelo processo de criação de um perfil do Database Mail, criando uma conta do Database Mail, adicionando a conta ao perfil e concedendo acesso público a esse perfil.
-- 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;
A última linha é na verdade a parte que o torna o perfil público padrão.
Usando
@is_default = 1
, estou configurando este perfil para ser o perfil público padrão. Se eu tivesse usado @is_default = 0
em vez disso, não seria o perfil público padrão. Para tornar um perfil público, especifique um
@principal_id
de 0
ou um @principal_name
de public
. Um perfil público está disponível para todos os usuários no msdb
banco de dados (embora os usuários também devam ser membros de DatabaseMailUserRole
para executar sp_send_dbmail
). Observe que só pode haver um perfil público padrão.
Atualizar um perfil existente
Se você já tem um perfil público, mas não é o perfil público padrão, você pode usar
sysmail_update_principalprofile_sp
para mudar isso. Exemplo:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;