Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
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 12/12/2007, 17h34   #1
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Par défaut database.ForceCommit et Oracle

Hello!

XMLRAD2006, Delphi et base de données Oracle. J'utilise dans mon code un TDacDatabase.ForceCommit (et cela pour diverses raisons).
Je viens de remarque que (apparament???) pour de oracle 8 ou 9 (et pas en 10, la ca marche) apres cette instruction, plus aucune données n'est inserée, ou modifiée dans la base de données par l'application. Comme si le fait de faire un forceCommit engendrait le fait que plus aucune transaction ne soit possible sur la base ?
Avez vous des infos à ce sujet ?

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 17h10   #2
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Et je ne comprends d'autant moins que le forcecommit est un "commit" classique d'un point de vue BDD (l'ado connection fait le commit meme si plusieurs transactions sont cascadées)....
J'ai ce phénomène sur 2 postes (chez moi et chez le client!) avec un client Oracle 9, aucune modif n'est appliquée sur la base meme celle faite durant la transaction du force commit. Et si je change simplement Forcecommit en commit ca marche normalement??

Le soucis c'est que je ne peux pas laisser le commit simple, car sous MSSQL, j'ai un deadlock du à une autre transcation en parallèle... Oracle s'en fiche et ne vérouille pas, MSSQL si. C'est pour cela que j'ai forcé le commit. Je vais qd meme pas tester si je suis en Oracle ou MSSQL et faire Commit ou ForceCommit selon!

Bref, je suis perplexe... il y a surement autrechose, mais je ne vois pas quoi! Le RefCountTransaction qui se passe mal, mais pkoi que dans ce cas ?... Je vois pas de lien .... Un beginTrans qui ne serait plus jamais effectuée ??
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 11h17   #3
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Desole mm si ca n'inspire personne je reviens avec ca, mais ca m'inquiete vraiment!

Apres etre passé par le ForceCommit, plus aucune modification n'est possible sur l'ensemble de ma base de données!! Et en plus de ca, sur toutes les lignes sur lesquels j'essai de faire une modif, il y reste un verrou ou qqch qui bloque toute les autres appli qui tenterai de modifier plus tard la meme ligne.... il ne me reste plus qu'a faire un iisreset....
Je comprends vraiment pas surtout que sur mon poste ca fonctionne nikel avec le forcecommit et cela sur la meme base. Les seules différences visibles sont la version du client Oracle (10 chez moi et 9 sur le serveur) et windows (XP chez moi et 2003 sur le serveur)...
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 08h39   #4
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
C'est la dernière, c'est promis.... les prochaines c'est pour une réponse!

Je m'en sors finalement en retirant un DataBase.StartTranscation un peu plus haut dans mon code.... ne me demandez pas pkoi il est la celui-la. Du coup le "ForceCommit" devient un "commit" normal et mon code fonctionne sous Oracle et sous MSSQL. Cool... mais bizard qd meme:

Ca le fait pas:
Code :
1
2
3
4
5
6
7
8
 
DataBase.StartTransation;
try
   ...
  DataBase.ForceCommit;
except
  ...
end;
Ca le fait à moitié:
Code :
1
2
3
4
5
6
7
8
 
DataBase.StartTransation;
try
   ...
  DataBase.Commit;
except
  ...
end;
Ca le fait:
Code :
1
2
3
4
5
6
7
8
 
//DataBase.StartTransation;
try
   ...
  DataBase.ForceCommit;
except
  ...
end;
Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2007, 13h52   #5
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
en général après un ForceCommit on fait un StartTransaction pour la suite du code sinon effectivement t'as des trucs bizarres.
le force commit c'est pour forcer le commit d'une transaction alors que tu es déjà a plusieurs niveaux d'imbrication des starttransactions. mais il faut redémarrer une transaction pour que le dépilement des commit se fasse correctement.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM 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 07h21.


 
 
 
 
Partenaires

Hébergement Web