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) ou 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
Cette procédure stockée appartient au rôle db_owner . Vous pouvez accorder EXECUTE
des autorisations pour n’importe quel utilisateur, 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 ApplicationUser
msdb
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;