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