Question

J'essaie d'envoyer un e-mail en utilisant sp_send_dbmail dans Sql Server 2005. J'ai à la fois le corps du texte et une requête envoyés en pièce jointe.

Parfois, cependant, la requête renvoie un ensemble de données vide.

Je pensais peut-être lancer la requête avant d'envoyer l'e-mail, et tester les résultats de cette façon.Ensuite, j'aurais un if-else comme suit:

if @@rowcount >0
  EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
        @subject = @subject,
        @body = @body_text, @body_format = 'HTML',
        @query = @query,
        @attach_query_result_as_file = 1, 
        @query_result_width = 4000, 
        @query_attachment_filename = 'Details.txt'
else
EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
        @subject = @subject,
        @body = @body_text, @body_format = 'HTML'

Mais je ne pense pas que ce soit un moyen efficace de résoudre le problème.

Des suggestions?TIA !!

Était-ce utile?

La solution

D'accord, je n'ai pas pu tester cela sur ma configuration au travail car il semble que nos administrateurs de base de données ont bloqué l'accès à cette procédure.Cependant, je sais que sp_send_dbmail n'utilisera pas de variables locales dans le script appelant, mais cela pourrait vous permettre d'utiliser une table temporaire globale.

Ce n'est pas une excellente solution, mais vous pouvez essayer d'insérer votre jeu de résultats de requête dans ## tempTable, puis de changer la requête que vous passez à sp_send_dbmail en select * from ##tempTable s'il y a> 0 lignes.

Cela devrait au moins être mieux que d'exécuter la requête d'origine 2x (si cela fonctionne).N'oubliez pas de le laisser tomber lorsque vous avez terminé!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top