Encore un petit truc chiant à résoudre
J'ai une base de donnée que je met à jour depuis un l'ordinateur 1.
La bdd se trouve sur le server
Les MàJ de la bdd se font à intervalles réguliers de temps
La MàJ est commandée depuis Excel et se fait en VBA
J'ai N<5 autres ordinateurs connectés au Server et qui ont besoin, de temps en temps, d'extraire des données de cette base de données.
Le code d'extraction à été fait en c#, compilé en librairie intégrée à Excel (cette partie à été faite par un développeur)
J'ai codé le code pour les update, ça marche plutôt bien, durée de l'update: 1 seconde max (je log le début et la fin de la procédure, environs 3k lignes updatées
Problème: si un des N ordinateurs interroge la bdd au moment où ordinateur 1 update la bdd, l'extraction est très lente, et l'update, qui d'habitude prends 1 seconde freez et met entre 14 et 32 secondes (durée observées
)
Au début, ma macro d'update vidait la bdd puis la remplissait. Je me suis dit que ça venait peut être de là, du coup, je l'ai changée et au lieu de vider/écrire, je passe par une requête Update
Même combat.
Est ce que quelqu'un aurait une idée?
La seule que je voit pour le moment, et que je vais tester est d'avoir 2 bdds... bdd1 est updatée, bdd2 est lue, à la fin de chaque update, ma macro sauve bdd1 en bdd2
Je me dis qu'en cas de conflit (lecture de bdd2 au moment de la sauvegarde de bdd1 en bdd2), je ferais ignorer l'erreur (vba ne pourra pas sauver sous bdd2 vu que bdd2 est utilisé ailleurs), l'update ne se fait donc pas et on attendra le prochain, ceci n'est pas génant en soit vu que les updates sont assez réguliers.
Si vous avez d'autres idées, je suis preneur
Merci