Concurence d'accès

mekhanik Messages postés 33 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 mai 2007 - 16 févr. 2006 à 10:26
mekhanik Messages postés 33 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 mai 2007 - 28 févr. 2006 à 11:35
Ayant développé un logiciel multi-utilisateur se connectant à une base access, je me pose la question de la concurence d'accès. Est-ce à moi de la gérer ou access le fait-il tout seul ? Y a t-il des paramètres à changer pour configurer access ?
Merci
N.B. : Est- ce qu'une transaction concerne la concurence d'accès ou est-ce juste un moyen de garantir le succès ou non d'une suite de mise à jour afin de garantir l'intégrité des données

4 réponses

TrafMaxime Messages postés 288 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 26 janvier 2012 1
16 févr. 2006 à 10:59
Une transaction permet de vérifier l'intégrité des données, aboutissant seulement si toutes les modifications fonctionnent..
En ce qui concerne la connexion (précise en quoi tu programmes), il y a plusieurs propriétés qui la concerne dans ton connection string.. par exemple préciser un mode exclusif ne permettra pas à un autre utilisateur d'ouvrir, soit toute la table (database locking mode 0 ->je crois..), ou même ligne (->1)...intéressant pour faire des modifs en cascade.

Pour avoir fait des tests en vb.net version 2002, je trouve que le mode exclusive ne fonctionne pas bien.., j'ai donc créé moi-même cette option en plaçant un booléen lorsqu'un utilisateur est en passe de faire un update.
Tout se joue à l'emplacement de ce test de valeur du booléen.
La plupart des commandes dans mon programme sont déconnectée, et au moment des boutons d'updates, l'utilisateur monopolise la connexion pendant un cours instant avant de remmettre au plus vite le booléen à 0..

si ça peut t'aider..

.Maytheforcebewithyou.Maxime.
0
mekhanik Messages postés 33 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 mai 2007
16 févr. 2006 à 14:22
Merci pour ta réponse.
Je programme en vb6. A propos de ton booléen comment gères - tu son accès en exclusion mutuel ? comment fais-tu pour être sur que deux processus ne le lise pas en même temps à vrai ? Si tu peux m'éclairer car ta solution m'intéresse.
0
TrafMaxime Messages postés 288 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 26 janvier 2012 1
16 févr. 2006 à 23:31
En fait, au booléen 'vrai, tu associe une ligne ds ta base de donnée
avec un numéro de clé primaire(ou ID) lu au moment de placer le booléen
(et tu ne déclare pas ta connexion au mode exclusif au passage, les
deux utilisateurs ont passé la barr 'booléen, et ressorte avec le jeton
qui leur permet tous les deux de lire (&write) les données.)

Ainsi ils essaieront tous deux d'écrire au meme n° ID et la tentative
(placé dans un try..catch (.net) ou 'on error... go to' en vb6 )

De là ils sont tout d'eux placé à nouveau au tirage du jeton.. et cette histoire ne peut pas durer bien longtemps...



Enfin bonne chance pour les tests.. tu ne sais jamais vraiment si t'as cliqué au bon moment...

Donne des nouvelles, ton choix m'intéresses aussi.. (parce que sur ce
point le dossier est épais et on en fait des bouquins entier, nb : 'la
progammation concurrente..)

.Maytheforcebewithyou.Maxime.
0
mekhanik Messages postés 33 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 mai 2007
28 févr. 2006 à 11:35
Salut, en fait après quelque test je me suis rendu compte que quand je mettais mes requetes dans une transaction begin commit, il n'y avait plus de problème de concurrence. Donc je n'ai pas cherché plus loin. J'ai effectué mes tests en lançant 4 fois le même programme sur le même poste. Lorsqu'il n'y a pas de transaction, une ou deux requetes passent mais j'ai systématiquement une erreur de risque de doublon pour les autres alors qu'avec une transaction aucune erreur et table bien mis à jour
0
Rejoignez-nous