Bonjour,
Je vous explique le problème en résumant :
Un trigger est posé sur une table.
A chaque action (update/delete/insert) sur une ligne de cette table, le trigger se déclenche et appelle une assembly préalablement déployée dans ma base (assembly codée en C# et déployée via VS2010) qui va aller alimenter une autre table (audit).
Jusque là tout va bien, sauf qu'en amont de ma base, j'ai un site web développé en ASP.NET et que beaucoup de monde utilisent.
Le problème donc, c'est que l'assembly met environ 30secondes à se lancer.
Je vous laisse donc imaginer le matin (ou lorsque le site n'a pas été utilisé depuis un moment) quand on se connecte sur le site : à la première action le site mouline pendant 30secondes le temps que l'assembly en base soit compilée et que le processus créé se lance. Là où ça devient critique c'est que parfois les actions se croisent sur le site et qu'un select est effectué sur la table en question alors que l'assembly n'a pas fini d'être compilée = plantage.
Ensuite une fois que l'audit est lancé, plus de problèmes jusqu'à ce que le processus du .exe (je suppose) résultant de la compilation de l'assembly soit arrêté par l'instance SQL Server..
Bref, j'ai beaucoup résumé, et désolé si je ne me suis pas bien fait comprendre, mais mes question sont :
- Comment rendre persistante la "compilation" d'une assembly sur SQL Server pour qu'il n'y ait plus à la recompiler ensuite ?
- Est ce que ça se paramètre quelque part ?
- Par défaut, de combien de temps le processus venant d'une assembly compilée reste actif ?
Merci d'avance !
Partager