Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme d'accés concurentiel a la base de données

5 réponses
Avatar
infomaroc
Bonjour,
j'ai une application VB installée sur plusieurs postes clients, et contient
des traitement sur une base de données distante avec des timers d'une seconde
ou 2, parfois y'a un message qui mdis que la source demandée est en cours
d'utilisation!
ca peut etre normal car un autre utlisateur pourrait utiliser cette base en
meme temps que ce dernier.
comment eviter ce probleme?
merci bcp

5 réponses

Avatar
X
Bonjour,

Ben en multipostes c'est logique en somme d'avoir plusieurs accès en
même temps... Avec des directives que je ne connais pas sur les BDD, c'est à
toi de définir les besoins puis la façon dont ça va être exploité... Le
système assure un minimum, le développeur doit compléter...

- En lecture généralement c'est libre, en écriture c'est bloqué sur
l'enregistrement ou le fichier... En réactualisation permanente ou pas, en
règle générale ça ne s'applique qu'à la base, et non aux fichiers lus en
mémoire (extraits de la base)...

- Pour manipuler tout ça, sans doute qu'il y a des directives propres à ton
type de BDD, sinon ce n'est pas toujours évident, par exemple en écriture,
on peut faire une copie de fichier.tmp pour chaque utilisateur, puis quand
le fichier est réintégré à sa base, si <>, modifier cette dernière, ceci
évite les blocage en écriture... De même pour éviter ceux qui dorment, on
peut envoyer un message, puis fermer d'autorité le fichier, etc...

J'ai déjà fait des programmes sous NT4 pou une vingtaine de postes, ben:
Il faut je pense définir les besoins, estimer les risques de conflit
d'utilisateurs (nombre, quantité et durée des enregistrements), implications
de ces derniers sur d'autres fichiers, priorités d'utilisateurs, etc...
Et ce n'est qu'ensuite que sera mise en place la stratégie de paramétrage
des accès aux fichiers...
Donc, in fine, pas de réponse tout faite, suivant les case, avec de la
logique et des simulations.

-------------------

"infomaroc" a écrit dans le message de news:

Bonjour,
j'ai une application VB installée sur plusieurs postes clients, et


contient
des traitement sur une base de données distante avec des timers d'une


seconde
ou 2, parfois y'a un message qui mdis que la source demandée est en


cours
d'utilisation!
ca peut etre normal car un autre utlisateur pourrait utiliser cette base


en
meme temps que ce dernier.
comment eviter ce probleme?
merci bcp



Avatar
infomaroc
merci pour ces informations.
les type d'accés que j'ai mis dans les timers sont des lecture pour
comparer qq valeur et agir!
je me demande c koi le nombre maximal de connexion supporté par sql server
,et comment je peux le modifier
je vais faire un test l'aprémidi et lire le log de sql quand ce probleme
survient afin de savoir la cause exacte
merci bcp
Avatar
Driss HANIB
je pense qu'il faut gérer l'erreur et boucler un certain nombre de fois que
tu n'as pas accès et tu reportes.
maintenant faut il réellement faire un traitement toutes les 2 secondes.

si c'est une extraction régulière de données, pour ma part j'ai fait la
chose suivante
je crée un programme qui tourne en tache de fond qui extrait les données
voulues et les met dans un fichier texte.
et mon programme principale, ne fait que lire ce fichier de temps en temps

Driss
"infomaroc" a écrit dans le message de
news:
Bonjour,
j'ai une application VB installée sur plusieurs postes clients, et


contient
des traitement sur une base de données distante avec des timers d'une


seconde
ou 2, parfois y'a un message qui mdis que la source demandée est en


cours
d'utilisation!
ca peut etre normal car un autre utlisateur pourrait utiliser cette base


en
meme temps que ce dernier.
comment eviter ce probleme?
merci bcp



Avatar
infomaroc
wi, pour le timer, c important chak 2 secondes ou meme une seconde!
je traite des données boursières qui chang chak seconde.
pour ta methode, elle est bonne, reste a savoir comment la fair :) jsuis pas
habituée au fichier textes!
comment faire le test: si la table est demandée et la connexion est regetée
par le serveur, attendre qu'elle soit acceptée ...????
merci
Avatar
jean-marc
"infomaroc" wrote in message
news:
wi, pour le timer, c important chak 2 secondes ou meme une seconde!



Sans doute un problème de design, mais bon, passons.

je traite des données boursières qui chang chak seconde.
pour ta methode, elle est bonne, reste a savoir comment la fair :) jsuis


pas
habituée au fichier textes!



Un peu de recherche sur le net te donnera des milliers d'exemples
La FAQ de ce groupe peut aussi être utile.

comment faire le test: si la table est demandée et la connexion est


regetée
par le serveur, attendre qu'elle soit acceptée ...????



Oui, c'est comme ça qu on fait pour gérer les inter-locks (gestion
des accès concurrents)

- Tu fais ta requete
- Tu récupères le code d'erreur
- Si l'erreur est de type "recoverable error" (une erreur pas dramatique),
tu attends un peu et tu réessaies
- Le tout enveloppé dans une boucle qui te fait sortir après un certain
n'ombre d'erreurs consécutives (ça s'appelle un "watch dog", un chien de
garde).

Tu peux aussi faire des query qui ne bloquent pas la table, en fonction de
ta BDD, tu peux spécifier dans le select que tu veux juste une consultation,
alors il ne posera pas de verrou sur les enregistrements, laissant les
autres faire leurs requètes. Je ne suis pas sur que ça existe en SQL Serve,
mais ça doit car ca existe dans les autres DB (Oracle, DB2);

--
Jean-marc