sql >> Base de Datos >  >> RDS >> Sqlserver

Crear un perfil público predeterminado para el correo electrónico de la base de datos en SQL Server (T-SQL)

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 al sp_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;