PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Blocage de base de données
Blocage de base de données
Débuté par info, 24 fév. 2006 08:42 - 1 réponse
Posté le 24 février 2006 - 08:42
Bonjour,

Après plusieurs heures / journées de recherches je vous expose mon problème:

J'accède à une table d'une base de données Access 2002 (Natif), décrite dans l'analyse, depuis 2 applications WINDEV 10 différentes, le tout fonctionnant sur 2 postes de travail distincts, la base de donnée étant sur un serveur Windows.

A) Il arrive que parfois lors de la lecture puis de la modification d'un record avec HModifie, ce record reste bloqué et n'est donc pas accessible aux AUTRES applications qui tentent de le modifier également.

B) Il arrive que parfois lors de la lecture puis de la modification d'un record avec HModifie, ce record et d'AUTRES records soient bloqués et donc pas modifiables par les AUTRES applications.

Dans les 2 cas, l'accès à un enregistrement différent par HlitRecherchePermier(...) suivi de sa modification sur le poste ayant entrainé le précédent blocage a pour effet de débloquer le tout.

Exemple I:

Le poste A lit et modifie le record 1--------------->OK Le record 1 est bloqué
Le poste B lit et veux modifier le record 1--------->Erreur sur HModifie
Le poste B réessaie de modifier le record 1------->Erreur sur Hmodifie
Le poste B réessaie de modifier le record 1------->Erreur sur Hmodifie
Le poste B réessaie de modifier le record 1------->Erreur sur Hmodifie
Le poste B réessaie de modifier le record 1------->Erreur sur Hmodifie
... ...
... ...
... ...
Le poste A lit et modifie le record 220 OKLe record 220 est bloqué
Le poste B réessaie de modifier le record 1 OK Le record 1 est modifié et bloqué


Exemple II:

Le poste A lit et modifie le record 1---------------->OK Le record 1 est bloqué
Le poste B lit et veux modifier le record 333------->Erreur sur HModifie
Le poste B réessaie de modifier le record 333----->Erreur sur Hmodifie
Le poste A lit et modifie le record 220-------------->OKLe record 220 est bloqué
Le poste B réessaie de modifier le record 333----->OK Le record 333 est modifie et bloqué


Pourquoi un HModifie sur une base Access bloque-t-il parfois longtemps un record ?
Pourquoi un HModifie sur une base Access bloque-t-il parfois longtemps une série de records ?
Y a t il un moyen efficace de ne pas bloquer un record une fois modifié ?
Comment procéder pour éviter ce problème et y a t il des "réglages" à effectuer soit dans Access / Windows / Windev pour éviter cela ?

Je précise que j'ai effectué des tests de modification via SQL (Update) et que le résultat est le même !
J'ai également testé en WD9... Idem.
J'ai bien sûr un Hmode("*",hModeMulti) dans l'initialisation du projet.
Les paramètres de HModifie(maTable,hNumEnrEnCours,hBlocageNon) n'ont apparament aucun effet (peut être uniquement avec des bases HyperFile?).

JE PRECISE POUR FINIR QUE CES "PRBLEMES" NE SONT PAS SYSTEMATIQUES MAIS APPARAISSENT TRES TRES REGULIEREMENT...


Je cale un peu et cherche une/des solution(s) ou voies de recherches...

Peut être ai je oublié un élément essentiel ???

Merci pour votre aide et pour le temps que vous pourrez consacrer à mes questions.

Cordialement.
Posté le 24 février 2006 - 17:38
Bonjour,

D'après mes (anciens) tests, j'avais ce problème suite au lock de windows lui-même, selon la taille de la base, l'outil JET me bloquait un à x Records. Le changement de "taille block" du disque serveur modifiait le valeur du x. Ceci était encore plus flagrant avec un user suppl. qui attaquait les tables avec accès.

Je n'ai pas trouvé de solution pour contourner ce problème car Microsoft m'a "juste" conseillé d'installer (acheter) SQL Serveur.

Désolé

JFG