|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 3 ![]() |
Bonjour,
Via un soft developpé en delphi 7, je fait appel une procedure stockée de mon SGBD Firebird via ADO qui lui meme passe par ODBC. Ma chaine de connection : CNXSTRING=Provider=MSDASQL.1;Extended Properties="Driver=Firebird/InterBase(r) driver;Dbname=192.168.XXX.XXX:dbname;CHARSET=NONE" L'appel a ma procedure stockée : execute procedure CLI$MAJARTICLE (:0,:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:SITE) Cette procedure stockée fait des inserts et des updates tres simples dans ma base. Or, je me rend compte que ces modifications ne sont visibles par un autre utilisateur que environ une minute apres la fermeture de mon coposant BD. Durant cette minute les modif ne sont pas visibles, toute tentative de modif de ces enregistrements aboutie a un message d'erreur de type deadlock. lock conflict on no wait transaction deadlock update conflicts with concurrent update Exemple : Derniere Update : 17h52m15s (impossible de voir les modif d'un autre client) Fermeture de la connection : 17h54m15s (impossible de voir les modif d'un autre client) 1 minute apres la fermeture : 17h55mh15 (tout va bien, on voit les modifs) alors que le programme ne fait rien pendant cette minute, enfin en tout cas il ne log aucune activité. Il est a noter que si tue la tache de ce soft, les modifs ne sont jamais "commitées". Tout se passe comme si la fermeture de la connection et donc le "commit" etait effectué avec environ 1 minute de retard (peut etre du a ADO, ODBC ou au soft que j'utilise). Suivant les symptomes decrits qu'en pensez-vous (ADO,ODBC ou le soft développé en delphi) ? Si c'est lié au driver (ADO ou ODBC), y'a t'il moyen de ne pas avoir ce délais ? A noter que quand je fait des updates directement dans ADO, sans passer par une procedure stockée, je n'ai aucun délais... genre : UPDATE XXXX SET etc.... et si je met exactement ce meme code dans ma procedure stockée, j'ai ce délais. Que le session soit ouverte en mode commitretaining ou commit ne change rien a ce délais. Merci d'avance de votre aide. - Jerome - Versions : Delphi : 7 Firebird serveur et client : 1.5.3 ODBC driver IBPhoenix : 2.00.00.129 ADO : Mis a jour a vec la derniere version (je l'ai plus en tete la) |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() |
Salut
Et si tu essais d'utiliser les composants IBX à la place de ADO rien que pour tester. J'utilise des procédures stockés et jamais eu de problème de avec les compos IBX ou FIBPlus. Cdt
__________________
On progresse ..... |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 3 ![]() |
Je n'ai pas essayé, mais il y a quelques semaines je passais par IBX et j'avais un soucis de gestion memoire.
Le soft fait beaucoup de requetes quasi en continu et au bout de quelques heures, il avait bouffé toute la memoire de l'ordi, et l'utilisateur avait des messages d'alerte de windows "Memoire inssufisante". Dès que je suis passé en ADO, plus de problème de memoire. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 379 ![]() |
peut importe le moyen de connexion utilisé pour ce connecter à la base de données, il faut toujours faire "commit" pour valider les modifications et ainsi les autres utilisateurs verront les résultats immédiatements.
mais il ne faut pas oublier que l'utilisateur qui est censé "voir" ces nouveaux résultats doit lui aussi "refaire" sa requête pour "rafraichir" les données. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com