Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/04/2006, 23h12   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 3
Points : 1
Points : 1
Par défaut Procedure Stockée, Update et Deadlock

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)
jetou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 08h36   #2
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
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 .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 09h45   #3
Invité de passage
 
Inscription : octobre 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 3
Points : 1
Points : 1
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.
jetou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2006, 16h27   #4
Membre éclairé
 
Inscription : décembre 2004
Messages : 379
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 379
Points : 304
Points : 304
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.
jean-jacques varvenne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h38.


 
 
 
 
Partenaires

Hébergement Web