Question

EXEC msdb.dbo.sp_send_dbmail 
@recipients= 'test@test.com',
@copy_recipients = 'test@test.com', 
@query = 'SELECT * FROM INSERTED',
@attach_query_result_as_file = 1,
@subject = 'Auto-Generated Deleted Item in Order Item Detail', 
@body = 'Item has been deleted from Order Item Detail', 
@body_format = 'HTML',
@importance = 'High'

Lorsque les exécute code ci-dessus je reçois l'erreur suivante:

Msg 22050, niveau 16, état 1, ligne 0 Erreur de formatage requête, les paramètres probablement invalides Msg 14661, niveau 16, état 1, procédure sp_send_dbmail, ligne 495 exécution de la requête a échoué: Msg 208, Niveau 16, État 1, Serveur BK00SQL0002, Ligne 1 Nom d'objet incorrect insertbefore.

Le dessous des œuvres: (? Comment puis-je modifier pour INSÉRÉ)

    EXEC msdb.dbo.sp_send_dbmail 
@recipients= 'test@test.com',
@copy_recipients = 'test@test.com',
@query = 'SELECT * FROM [PreMfg].[dbo].[Order Item Detail Audit]', 
@subject = 'An Item Has Been Deleted From the Order Item Detail Table',
@attach_query_result_as_file = 1, 
@body = 'An Item Has Been Deleted From the Order Item Detail Table', 
@body_format = 'HTML',
@importance = 'High'
Était-ce utile?

La solution

Vous ne pouvez pas référencer le pseudo-tableau inséré à l'extérieur du déclencheur. Et voulez-vous vraiment envoyer un e-mail pour chaque insertion / mise à jour? Et faire la transaction qui a invoqué l'attente de déclenchement pour tout ce qui arrive (même si la messagerie base de données est asynchrone, il est gratuit)?

Je vous suggère de consigner les données à une table de file d'attente, et avoir un emploi que chaque minute (ou cinq minutes, ou une fréquence raisonnable) se réveille et envoie un courrier pour toutes les nouvelles données qu'il trouve dans la table de file d'attente.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top