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_nameargomento quando si chiamasp_send_dbmailprocedura. - Crea un profilo privato predefinito per l'utente corrente.
- Crea un profilo pubblico per
msdbbanca 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 = 'example@sqldat.com',
@replyto_address = 'example@sqldat.com',
@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;