web-dev-qa-db-fra.com

Problème Envoi d'une pièce jointe à l'aide de DBO.SP_SEND_DBMAIL

J'essaie d'envoyer un attachement à l'aide de dbo.sp_send_dbmail. Je ne peux pas faire cela, je reçois le fichier d'attache d'erreur\vmname\listeam\lcpp_cp.pdf est invalide.

Juste quelques choses rapides que j'ai vérifiées. J'ai essayé diverses conventions de dénomination. J'ai partagé le dossier que la pièce jointe est po. J'ai vérifié la connexion comme dans les services MMC sur le VM si la base de données SQL est assise. Le Connectez-vous comme pour SQL Server et SQL Server Agent est [email protected] J'ai donné à cet utilisateur [email protected] Accès au répertoire que je souhaite envoyer comme pièce jointe est dans. J'ai Triple a vérifié la précision des emplacements. L'utilisateur [email protected] a maintenant lu et exécute des autorisations sur C $ sur le VM correspondant.

Le fichier LCPP_CP.PDF est de 72 Ko.

Le fichier LCPP_CP.PDF n'est pas lu que le profil est public.

Je peux envoyer un email sans attachement. L'utilisateur Send_Request dans dbo.sysmail_mailitems est domaine\sqlreportingagent

Mes questions sont

  • Existe-t-il une procédure stockée que je peux utiliser pour vérifier le moteur SQL connecté à l'utilisateur?
  • Est-il possible que msdb.dbo.sp_send_dbmail ne fonctionne pas sous le compte SQL Server?
  • Si tel est le cas, une procédure stockée que je peux utiliser pour vérifier quel utilisateur msdb.dbo.sp_send_dbmail utilise
  • Est-il possible que ce n'était pas une question d'autorisations?

Mon code est ci-dessous, mais c'est vraiment juste une chair de chaude; Les lignes commentées sont les différentes permutations que j'ai essayées.

EXEC msdb.dbo.sp_send_dbmail

@recipients=N'[email protected]',

@body= 'Test Email Body', 

@subject = 'Test Email 18:01',

@profile_name = 'Team Meeting Profile'
--@file_attachments ='\\VMName\c$\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments =N'\\VMName\c$\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments ='\\C:\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments =N'\\C:\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments ='C:\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments =N'C:\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments ='\\VMName\TEAMLists\TEAM\LCPP_CP.pdf'
--@file_attachments ='\\VMName\ListTEAM\LCPP_CP.pdf'
2

Vous pouvez vérifier le journal du courrier de la base de données en allant à Gestion -> Cliquez avec le bouton droit de la souris sur la base de données Mail -> Sélectionnez Afficher la base de données. Toutes les erreurs doivent être ici, par exemple:

Message Le courrier n'a pas pu être envoyé aux destinataires en raison de la défaillance du serveur de messagerie. (Envoi de courrier à l'aide du compte 1 (2014-05-16t02: 21: 47). Message d'exception: Impossible d'envoyer des mails au serveur de messagerie. (Un destinataire doit être spécifié.).).).

De plus, vous pouvez reposer le profileur SQL Server pour vérifier l'utilisateur pour SP_SEND_DBMAIL. Je pense qu'il utilise le compte d'utilisateur actuel pour envoyer le courrier, donc je confirmerais également que votre compte Windows a des autorisations au fichier.

3
Kevin

Vous avez déjà mentionné cela:

"Est-il possible que msdb.dbo.sp_send_dbmail ne fonctionne pas sous le compte SQL Server?"

C'est plus de travail dosent depuis SQL2005 ou 2008.

http://msdn.microsoft.com/en-us/en-en/library/ms190307.aspx -> "Par conséquent, les utilisateurs authentifiés avec SQL Server Authentication ne peuvent pas joindre de fichiers à l'aide de @file_Attacchments . "

Je cherche toujours une solution et j'ai trouvé ce fil. Donc, il y a une réponse pourquoi il fonctionne dosent :)

0
hellskitchen