Cuando usa el sp_send_dbmail
procedimiento almacenado para enviar correos electrónicos en SQL Server, normalmente incluiría el @profile_name
argumento para especificar qué perfil usar.
Sin embargo, si omite este argumento, sp_send_dbmail
utilizará el perfil privado predeterminado para el usuario actual. Si el usuario no tiene un perfil privado predeterminado, sp_send_dbmail
utilizará el perfil público predeterminado para msdb
base de datos.
Si ninguno de estos está configurado, obtendrá el siguiente error:
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.
Si recibe este error, básicamente tiene tres opciones:
- Especifique qué perfil usar, incluyendo el
@profile_name
argumento al llamar alsp_send_dbmail
procedimiento. - Cree un perfil privado predeterminado para el usuario actual.
- Cree un perfil público para
msdb
base de datos.
Este artículo proporciona un ejemplo de la tercera opción:crear un perfil público para msdb
base de datos.
Ejemplo
Este es un ejemplo que pasa por el proceso de creación de un perfil de Correo electrónico de base de datos, creación de una cuenta de Correo electrónico de base de datos, adición de la cuenta al perfil y luego concesión de acceso público a ese 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;
La última línea es en realidad la parte que lo convierte en el perfil público predeterminado.
Usando @is_default = 1
, estoy configurando este perfil para que sea el perfil público predeterminado. Si hubiera usado @is_default = 0
en cambio, no sería el perfil público predeterminado.
Para hacer público un perfil, especifique un @principal_id
de 0
o un @principal_name
de public
. Un perfil público está disponible para todos los usuarios en msdb
base de datos (aunque los usuarios también deben ser miembros de DatabaseMailUserRole
para ejecutar sp_send_dbmail
).
Tenga en cuenta que solo puede haber un perfil público predeterminado.
Actualizar un perfil existente
Si ya tiene un perfil público, pero no es el perfil público predeterminado, puede usar sysmail_update_principalprofile_sp
para cambiar eso.
Ejemplo:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;