Partager via


sysmail_add_principalprofile_sp (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Accorde l’autorisation à un msdb principal de base de données d’utiliser un profil de messagerie de base de données. Le principal de base de données doit être mappé à un utilisateur d’authentification SQL Server, à un utilisateur Windows ou à un groupe Windows.

Dans Azure SQL Managed Instance et SQL Server 2022 (16.x), le principal de base de données peut également mapper à un utilisateur Microsoft Entra.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @principal_id = ] principal_id

ID de l’utilisateur ou du rôle de base de données dans la msdb base de données pour l’association. @principal_id est int, avec la valeur par défaut NULL. Vous devez spécifier @principal_id ou @principal_name . Un @principal_id de fait de 0 ce profil un profil public, lui accordant l’accès à tous les principaux de la base de données.

[ @principal_name = ] 'principal_name'

Nom de l’utilisateur ou du rôle de base de données dans la msdb base de données pour l’association. @principal_name est sysname, avec la valeur par défaut NULL. Vous devez spécifier @principal_id ou @principal_name . Une @principal_name de faire de public ce profil un profil public, lui accordant l’accès à tous les principaux de la base de données.

[ @profile_id = ] profile_id

ID du profil de l’association. @profile_id est int, avec la valeur par défaut NULL. Vous devez spécifier @profile_id ou @profile_name .

[ @profile_name = ] 'profile_name'

Nom du profil pour l'association. @profile_name est sysname, sans valeur par défaut. Vous devez spécifier @profile_id ou @profile_name .

[ @is_default = ] is_default

Indique si ce profil représente le profil par défaut pour le principal. Un principal ne peut avoir qu'un seul profil par défaut. @is_default est bit, sans valeur par défaut.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Notes

Pour rendre un profil public, spécifiez une @principal_id de 0 ou une @principal_name de public. Un profil public est disponible pour tous les utilisateurs de la msdb base de données, bien que les utilisateurs doivent également être membres de DatabaseMailUserRole pour s’exécuter sp_send_dbmail.

Un utilisateur de base de données ne peut avoir qu’un seul profil par défaut. Lorsque @is_default est 1 et que l’utilisateur est déjà associé à un ou plusieurs profils, le profil spécifié devient le profil par défaut de l’utilisateur. L'ancien profil par défaut est toujours associé à l'utilisateur, mais n'est plus le profil par défaut.

Quand @is_default est 0 et qu’aucune autre association n’existe, la procédure stockée retourne une erreur.

La procédure sysmail_add_principalprofile_sp stockée se trouve dans la msdb base de données et appartient au dbo schéma. La procédure doit être exécutée avec un nom en trois parties si la base de données actuelle n’est pas msdb.

autorisations

Vous pouvez accorder EXECUTE des autorisations sur cette procédure, mais ces autorisations peuvent être remplacées lors d’une mise à niveau de SQL Server.

Exemples

R. Créer une association et définir le profil par défaut

L’exemple suivant crée une association entre le profil nommé AdventureWorks Administrator Profile et l’utilisateur ApplicationUsermsdb de base de données. Le profil est le profil par défaut de l'utilisateur.

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

B. Créer un profil public par défaut

L’exemple suivant montre comment rendre le profil AdventureWorks Public Profile public par défaut pour les utilisateurs de la msdb base de données.

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