Bonjour,
Je tente de vous exposer mon problème clairement et sobrement :
L'an dernier, nous avons mis en place un ERP 'MS Dynamics NAV' sur une base SQL. J'ai créé une base Access de Reporting de cet ERP. Cette base access est composée :
- de tables de reporting (tables access)
- de tables attachées (tables sources de l'ERP).
Dans ma base access, J'ai du code vba qui va mettre à jour cette base de reporting (je rapatrie les données, je les dispatche entre mes tables access et j'effectue quelques traitements / transformations). Temps de mise à jour : 00:03:30 => acceptable.
Et là, je me dis que ce serait bien que ma base de reporting soit une vraie base SQL. Je demande donc à l'IT de créer une base SQL sur le serveur de test. Je crée exactement les mêmes tables que les tables de reporting créées dans Access.
Je duplique ma base access et je remplace les tables access par des tables attachées à ma base SQL de reporting. Au point de vue fonctionnel, ça marche. Par contre, au niveau performance, je dois être à 4 heures de mis à jour par rapport aux 3 minutes 30 !!!
Donc, ce que je constate :
- l'INSERT INTO entre tables attachées de deux serveurs différents est une catastrophe pour les performances
- en remplacant l'INSERT INTO par un 'select' et un addnew en VBA, c'est un peu mieux (étrange comme résultat)
- je vais bien plus vite en faisant [server Prod] => Access Local => [Server Test] que [server Prod] => [Server Test] (encore plus étrange comme résultat)
Mes questions :
En fait, je demande à des gens d'expérience de réagir sur le projet. La réponse n'est peut-être pas technique: peut-être que mon projet est tout simplement mal pensé.
Dans le cas où je pilote depuis access (ce qui m'arrange évidemment), devrais-je m'y prendre autrement ?
Merci par avance en tous cas. Je suis preneur de tout conseil.
Fil







Répondre avec citation






Partager