sysmail_add_principalprofile_sp (Transact-SQL)

Si applica a:SQL Server Istanza gestita di SQL di Azure

Concede l'autorizzazione per un'entità msdb di database per l'uso di un profilo Posta elettronica database. L'entità di database deve eseguire il mapping a un utente di autenticazione di SQL Server, a un utente di Windows o a un gruppo di Windows.

In Istanza gestita di SQL di Azure e SQL Server 2022 (16.x), l'entità di database può anche eseguire il mapping a un utente di Microsoft Entra.

Convenzioni di sintassi Transact-SQL

Sintassi

sysmail_add_principalprofile_sp
    { [ @principal_id = ] principal_id | [ @principal_name = ] 'principal_name' }
    , { [ @profile_id = ] profile_id | [ @profile_name = ] 'profile_name' }
    [ , [ @is_default ] = 'is_default' ]
[ ; ]

Argomenti

[ @principal_id = ] principal_id

ID dell'utente o del msdb ruolo del database nel database per l'associazione. @principal_id è int, con il valore predefinito .NULL È necessario specificare @principal_id o @principal_name . Un @principal_id di 0 rende questo profilo un profilo pubblico, concedendo l'accesso a tutte le entità del database.

[ @principal_name = ] 'principal_name'

Nome dell'utente o del ruolo del database nel msdb database per l'associazione. @principal_name è sysname, con il valore predefinito NULL. È necessario specificare @principal_id o @principal_name . Un @principal_name di public rende questo profilo un profilo pubblico, concedendole l'accesso a tutte le entità del database.

[ @profile_id = ] profile_id

ID del profilo per l'associazione. @profile_id è int, con il valore predefinito NULL. È necessario specificare @profile_id o @profile_name .

[ @profile_name = ] 'profile_name'

Nome del profilo per l'associazione. @profile_name è sysname, senza impostazione predefinita. È necessario specificare @profile_id o @profile_name .

[ @is_default = ] is_default

Indica se il profilo è il profilo predefinito per l'entità. A un'entità può essere associato un solo profilo predefinito. @is_default è bit, senza impostazione predefinita.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

Per rendere pubblico un profilo, specificare un @principal_id di 0 o un @principal_name di public. Un profilo pubblico è disponibile per tutti gli utenti nel msdb database, anche se gli utenti devono anche essere membri di DatabaseMailUserRole per eseguire sp_send_dbmail.

Un utente del database può avere un solo profilo predefinito. Quando @is_default è 1 e l'utente è già associato a uno o più profili, il profilo specificato diventa il profilo predefinito per l'utente. Il profilo che in precedenza era il profilo predefinito è tuttora associato all'utente, ma non è più il profilo predefinito.

Quando @is_default è 0 e non esiste alcuna altra associazione, la stored procedure restituisce un errore.

La stored procedure sysmail_add_principalprofile_sp si trova nel msdb database ed è di proprietà dello dbo schema. La procedura deve essere eseguita con un nome in tre parti se il database corrente non msdbè .

Autorizzazioni

Questa stored procedure è di proprietà del ruolo db_owner . È possibile concedere EXECUTE autorizzazioni per qualsiasi utente, ma queste autorizzazioni possono essere sottoposte a override durante un aggiornamento di SQL Server.

Esempi

R. Creare un'associazione e impostare il profilo predefinito

Nell'esempio seguente viene creata un'associazione tra il profilo denominato AdventureWorks Administrator Profile e l'utente ApplicationUserdel msdb database . Il profilo è il profilo predefinito per l'utente.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'ApplicationUser',
    @profile_name = 'AdventureWorks Administrator Profile',
    @is_default = 1;

B. Rendere un profilo il profilo pubblico predefinito

L'esempio seguente rende il profilo AdventureWorks Public Profile pubblico predefinito per gli utenti nel msdb database.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'public',
    @profile_name = 'AdventureWorks Public Profile',
    @is_default = 1;