IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Verrous / MaxLockPerFile / JRO [AC-2000]


Sujet :

Access

  1. #1
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 144
    Points : 189
    Points
    189
    Par défaut Verrous / MaxLockPerFile / JRO
    Bonsoir !

    Quelqu'un sait-il quel seuil doit être dépassé pour que se déclenche l'erreur 3052 : "Le nombre de verrous disponibles pour le partage des fichiers est dépassé..." lors d'une synchro "SynchronizeDBsJRO LocalPath, SynchPath, SyncType, 2" ???

    Est-ce la taille du fichier mdb, ou le nombre de Tables dans ce fichier, ou le nombre d'enregistrements dans les plus grosses Tables, ou le nombre total et le type de champs, ou la complexité des relations entre les Tables???

    Ce fichier mdb pèse 127.000Ko, contient environ 45 Tables, dont la plus lourde possède 30.000 enregistrements.

    Ce n'est pas énorme...

    Je viens d'avoir cette erreur pour la première fois sur tous les postes en même temps après l'ajout quotidien de quelques nouvelles lignes. Il n'y avait eu aucune modification de structure des Tables depuis plusieurs semaines.

    J'ai donc modifié MaxLockPerFile, via
    - le registre (de 9500 à 15000)
    - le code VBA (DAO.DBEngine.SetOption dbMaxLocksPerFile, 15000).

    Sans effet.

    J'ai décoché Options/Advanced/"Open Databases using record-level locking".

    Sans effet non plus.

    Vu la complexité de la synchronisation, il n'est pas envisageable de remplacer celle-ci par d'innombrables UPDATE queries.

    Ma question essentielle est de savoir s'il serait utile de scinder ce fichier mdb en plusieurs fichiers plus petits ??? Avec l’inconvénient de perdre beaucoup d'intégrité référentielle, ce qui serait dommage.

    Je pense naturellement à migrer définitivement cette base Access vers un autre format, et toutes les suggestions sont les bienvenues !

    Merci !

  2. #2
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 144
    Points : 189
    Points
    189
    Par défaut Résolu
    Bonsoir à tous...

    Faute de trouver d'explication satisfaisante sur la cause précise de ce problème, je me suis résolu ce week-end à créer un nouveau fichier mdb tout frais, pour y importer l'ensemble des Tables + Relationships du mdb qui refusait de synchroniser en raison de ces >9500 "verrous", puis à recréer son petit set de replicas.

    A peine dix minutes de travail, en fait. J'aurais bien-sûr du essayer cela plus tôt.

    Succès immédiat !

    La synchronisation est redevenue très rapide, alors qu'elle avait tendance à prendre plus d'une minute depuis plusieurs mois sur ce fichier qui a déjà deux ans d'âge avec plusieurs synch par jour.

    J'en conclus -peut-être fort naïvement, qu'Access doit multiplier ses verrous dans les system et hidden files, qui conservent l'historique des synchronisations et des conflits. Au bout d'un temps assez long, ça peut déborder...

    Brave Old Access....

    Je ne marque pas ce fil comme résolu, si jamais quelqu'un pouvait apporter une explication plus détaillée du mécanisme MaxLocksPerFile...

    Un très très grand merci à Laurent pour son excellente analyse !

    phil

  3. #3
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 931
    Points
    931
    Par défaut
    Bonsoir Harpyopsis,

    J'ai rencontré le même problème, non pas avec une synchronisation, mais avec une mise à jour en masse dans une base Sqlserver, à partir de tables Access, ce qui m'avait surprise dans la mesure où je ne comprenais pas l'utilisation de verrous à l'enregistrement dans ce cas (il s'agissait d'ajouts en masse dans Sqlserver). Comme la modification que tu évoques via VBA a fonctionné pour moi, je n'ai pas cherché plus loin (c'est la méthode recommandée - plutôt qu'une modification dans la base de registre - dans la mesure où sa portée est limitée à la session).

    La FAQ donne quelques lumières sur les verrous, ici, mais toujours dans le contexte des mises à jour via Recordset.

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  4. #4
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 144
    Points : 189
    Points
    189
    Par défaut
    Bonjour Paraffine !
    Merci pour ce sympathique message !
    En effet, les forums proposent quelques lumières sur les verrous en général, mais rarement en ce qui concerne les verrous sur opérations de synchronisation.
    Faute d'autres explications, je penche pour un alourdissement excessif des system objects avec le temps.
    Il suffit donc de reconstruire le fichier mdb et de recréer le set de réplicas. C'est bête!
    J'avais autrefois un soft "Stellar Phoenix Access Repair" qui détectait et réparait assez bien d'erreurs dans les fichiers mdb, mais ce logiciel causait aussi beaucoup de pertes de Tables ou de Formulaires. Je l'ai abandonné.
    Très bonne journée à toi !
    phil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. verrous sur les tables
    Par rv66 dans le forum Paradox
    Réponses: 2
    Dernier message: 04/09/2005, 20h15
  2. update large table et verrous
    Par pascalste dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/07/2005, 09h42
  3. [AS400] probleme verrous
    Par Tomus dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 03/06/2005, 08h41
  4. Loquets et verrous ou versionning ?
    Par jibe74 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/01/2005, 11h49
  5. [SGBD]Verrous
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 16/11/2004, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo