Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Creare un profilo pubblico predefinito per Posta elettronica database in SQL Server (T-SQL)

Quando usi sp_send_dbmail stored procedure per inviare e-mail in SQL Server, in genere dovresti includere il @profile_name argomento per specificare quale profilo utilizzare.

Tuttavia, se ometti questo argomento, sp_send_dbmail utilizzerà il profilo privato predefinito per l'utente corrente. Se l'utente non ha un profilo privato predefinito, sp_send_dbmail utilizzerà il profilo pubblico predefinito per msdb banca dati.

Se nessuno di questi è configurato, riceverai il seguente errore:

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 ricevi questo errore, hai sostanzialmente tre opzioni:

  • Specifica quale profilo utilizzare, includendo il @profile_name argomento quando si chiama sp_send_dbmail procedura.
  • Crea un profilo privato predefinito per l'utente corrente.
  • Crea un profilo pubblico per msdb banca dati.

Questo articolo fornisce un esempio della terza opzione:creare un profilo pubblico per msdb banca dati.

Esempio

Ecco un esempio che illustra il processo di creazione di un profilo di posta elettronica database, creazione di un account di posta elettronica database, aggiunta dell'account al profilo e concessione dell'accesso pubblico a tale profilo.

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

L'ultima riga è in realtà la parte che lo rende il profilo pubblico predefinito.

Usando @is_default = 1 , sto impostando questo profilo come profilo pubblico predefinito. Se avessi usato @is_default = 0 invece, non sarebbe il profilo pubblico predefinito.

Per rendere pubblico un profilo, specifica un @principal_id di 0 o un @principal_name di public . Un profilo pubblico è disponibile per tutti gli utenti in msdb database (sebbene gli utenti debbano essere anche membri di DatabaseMailUserRole per eseguire sp_send_dbmail ).

Tieni presente che può esistere un solo profilo pubblico predefinito.

Aggiorna un profilo esistente

Se hai già un profilo pubblico, ma non è il profilo pubblico predefinito, puoi utilizzare sysmail_update_principalprofile_sp per cambiarlo.

Esempio:

EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;