Pour envoyer des e-mails à l'aide de la messagerie de base de données dans SQL Server, un utilisateur doit être membre du DatabaseMailUserRole dans le msdb base de données et avoir accès à au moins un profil de messagerie de base de données.
Pour accorder à un utilisateur l'accès à un profil de messagerie de base de données avec T-SQL, utilisez le sysmail_add_principalprofile_sp
procédure stockée dans msdb
base de données.
Exemple
Voici un exemple pour illustrer.
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
Dans ce cas, j'accorde à l'utilisateur "Marge" l'accès au profil "DB Admin Profile".
Cela suppose que le profil et l'utilisateur existent déjà.
Dans ce cas, j'ai également spécifié @is_default = 1
, ce qui en fait le profil par défaut de l'utilisateur.
Spécifiez les identifiants d'utilisateur/de profil
Vous pouvez également spécifier l'ID utilisateur et/ou l'ID de compte au lieu de leurs noms.
Par conséquent, nous pourrions modifier l'exemple précédent pour qu'il ressemble à ceci :
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_id = 1,
@principal_id = 25,
@is_default = 1;
Cela suppose évidemment que ce sont les identifiants des comptes en question.
Notez que le nom ou l'ID doit être fourni.
De plus, lorsque vous fournissez les identifiants, ils sont fournis sous la forme int .
Notez que le sysmail_add_principalprofile_sp
la procédure stockée est dans le msdb
base de données, et elle appartient à dbo
schéma. Par conséquent, vous devrez utiliser un nommage en trois parties si vous l'exécutez depuis l'extérieur de msdb
base de données.
Profils publics
Vous pouvez également faire d'un profil le profil public par défaut pour les utilisateurs dans msdb base de données.
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;
Pour rendre un profil public, spécifiez un @principal_id
de 0
ou un @principal_name
de public
. Un profil public est disponible pour tous les utilisateurs dans le msdb base de données (bien que les utilisateurs doivent également être membres de DatabaseMailUserRole pour exécuter sp_send_dbmail
).
Notez qu'il ne peut y avoir qu'un seul profil public par défaut.
Configuration de la messagerie de base de données
Les étapes ci-dessus supposent que vous avez déjà créé un profil de messagerie de base de données et ajouté au moins un compte de messagerie de base de données à ce profil.
Voir Comment envoyer un e-mail dans SQL Server pour un exemple complet de configuration de la messagerie de base de données, puis d'envoi d'un e-mail.