48 votes

Erreur 'le nom du profil n'est pas valide' lors de l'exécution de la commande sp_send_dbmail

J'ai un compte Windows avec le groupe d'utilisateurs et j'essaie d'exécuter sp_send_dbmail mais je reçois une erreur :

Le nom du profil n'est pas valide.

Cependant, lorsque je me suis connecté en tant qu'administrateur et que j'ai exécuté la commande sp_send_dbmail, j'ai réussi à envoyer l'e-mail, ce qui prouve que le nom du profil existe bien sur le serveur.

52voto

Sam Points 5135

Vous devez accorder à l'utilisateur ou au groupe les droits nécessaires pour utiliser le profil. Ils doivent être ajoutés à la base de données msdb et vous les verrez ensuite disponibles dans l'assistant de courrier lorsque vous gérez la sécurité du courrier.

Pour en savoir plus sur la sécurité, cliquez ici : http://msdn.microsoft.com/en-us/library/ms175887.aspx

Vous trouverez ici une liste des procédures de courrier : http://msdn.microsoft.com/en-us/library/ms177580.aspx

Exemple script pour 'TestUser' pour utiliser le profil nommé 'General Admin Mail'.


USE [msdb]
GO
CREATE USER [TestUser] FOR LOGIN [testuser]
GO
USE [msdb]
GO
EXEC sp_addrolemember N'DatabaseMailUserRole', N'TestUser'
GO

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'General Admin Mail',
    @principal_name = 'TestUser',
    @is_default = 1 ;

7 votes

Cette erreur peut également se produire si vous avez spécifié le MAUVAIS nom de profil via certains types de code... c'est-à-dire que sp_send_dbmail @profile_name = N'un profil qui n'existe pas', etc... produira également cette erreur.

2 votes

En guise d'avertissement, cette même erreur peut AUSSI être causée si/quand vous avez simplement oublié de permettre à l'agent du serveur SQL d'accéder aux interfaces de messagerie de base de données du serveur SQL - comme indiqué sur ce lien : sqlmag.com/blog/avoiding-failed-notify-operator-email-errors (en anglais)

0 votes

Un grand merci à @MichaelK.Campbell dont le commentaire ci-dessus m'a aidé à résoudre ce problème !

27voto

user3818587 Points 273

J'ai aussi le même problème. Voici ce que j'ai fait :

Si vous avez déjà fini d'accorder à l'utilisateur/groupe les droits d'utiliser le nom du profil.

  1. Allez à la Assistant de configuration de Base de données Mail
  2. Cochez Gérer la sécurité du profil
  3. Sur l'onglet des profils publics, vérifiez le nom de votre profil
  4. Sur l'onglet des profils privés, sélectionnez NT AUTHORITY \NETWORK SERVICE pour le nom d'utilisateur et vérifier le nom de votre profil
  5. Faites #4 cette fois pour NT AUTHORITY \SYSTEM nom d'utilisateur
  6. Cliquez sur Suivant jusqu'à Terminer.

2 votes

Et si vous n'avez pas "l'AUTORITÉ NT". \NETWORK SERVICE" en tant qu'utilisateur dans votre instance particulière de SQL ? J'ai résolu le problème d'une autre manière. Voir ma réponse ci-dessus.

2 votes

Note : pour moi, j'avais juste besoin de vérifier que mon nom de profil était un profil public. Cela a fonctionné pour ce dont j'avais besoin dans mon environnement de développement. Je n'avais pas besoin de l'AUTORITÉ NT \NETWORK étape du SERVICE.

7voto

Fernando68 Points 365

Avez-vous activé le profil pour l'agent SQL Server ? C'est une étape courante qui est manquée lors de la création de profils d'emails dans DatabaseMail.

Des pas :

  • Cliquez avec le bouton droit de la souris sur SQL Server Agent dans l'Explorateur d'objets (SSMS).
  • Cliquez sur Propriétés
  • Cliquez sur l'onglet Système d'alerte dans la navigation de gauche.
  • Activer le profil de messagerie
  • Définir le système de messagerie et le profil de messagerie
  • Cliquez sur OK
  • Redémarrer l'agent du serveur SQL

3voto

greatbear302 Points 159

Le nom du profil n'est pas valide [SQLSTATE 42000] (Erreur 14607)

Cela m'est arrivé après avoir copié le travail script de l'ancien serveur SQL vers le nouveau serveur SQL. Dans SSMS, sous Management, le nom du profil Database Mail était différent dans le nouveau serveur SQL. Tout ce que j'ai eu à faire était de mettre à jour le nom dans le travail script.

1voto

MTAdmin Points 923

Dans mon cas, je déplaçais un SProc entre serveurs et le nom du profil dans mon code TSQL ne correspondait pas au nom du profil sur le nouveau serveur.

La mise à jour du nom de profil TSQL == Nouveau nom de profil du serveur a corrigé l'erreur pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X