Bonjour,
Je travaille avec un serveur SQL 2008.
J'aimerais créer un trigger qui envoie un email lorsqu'il détecte qu'un certain champ lors de l'ajout dans la table a la valeur plus petite que 20.
Mon trigger fonctionne bien comme ceci :
Cependant, si j'ajoute la clause @query dans mon envoie de email, alors là, rien ne va plus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ALTER TRIGGER [DiskSpace].[low_disk_space_notification] on [DiskSpace].[FreeSpace] after insert AS BEGIN SET NOCOUNT ON; if (select disksize from inserted where percentage < 20) > 0 BEGIN EXEC msdb..sp_send_dbmail @profile_name = 'ClusterMailProfile', @recipients='jacinthe.bouchard@lassonde.com', @subject='Subject', @body='Body' END END
Avec la clause @query, si je fais un ajout dans ma table, l'insert ne se termine jamais et cela créé un lock sur le serveur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ALTER TRIGGER [DiskSpace].[low_disk_space_notification] on [DiskSpace].[FreeSpace] after insert AS BEGIN SET NOCOUNT ON; if (select disksize from inserted where percentage < 20) > 0 BEGIN EXEC msdb..sp_send_dbmail @profile_name = 'ClusterMailProfile', @recipients='adresse@compagnie.com', @subject='Subject', @body='Body', @query='select * from administrator.diskspace.freespace' END END
Je ne comprend pas pourquoi cela ne fonctionne pas ! Vous avez des idées ?
Si j'exécute l'envoie de email en dehors du trigger, cela fonctionne !
Merci,
Baq'
Partager