probleme d'accés concurentiel a la base de données
5 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <r.khadija@gmail.com> a écrit dans le message de news:
2CAF8F5B-F84B-459D-BF25-4AF69AF59300@microsoft.com...
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
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
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
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
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
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
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" <r.khadija@gmail.com> a écrit dans le message de
news:2CAF8F5B-F84B-459D-BF25-4AF69AF59300@microsoft.com...
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
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
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
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
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
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
"infomaroc" <r.khadija@gmail.com> wrote in message
news:AC89A9F0-8398-4366-A93F-5A9D4ABE4031@microsoft.com...
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);
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);