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

Modélisation Discussion :

Erreur-3052 "File sharing lock count exceeded. Increase max locks per file registry” [AC-2007]


Sujet :

Modélisation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Par défaut Erreur-3052 "File sharing lock count exceeded. Increase max locks per file registry”
    Bonjour a tous,
    Je suis en train d’inserrer une clef primaire dans une table qui contient environ 1,000,000 d’enregistrements. Malheureusement, l’operation n’aboutit pas et j’obtiens l’erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error-3052 "File sharing lock count exceeded. Increase max locks per file registry".
    Après quelques recherches sur le net, j’ai compris qu’il fallait augmenter le MaxLocksPerFile dans le registre. Après avoir augmenter la valeur de 9500 a 1,000,000 j’obtiens maintenant un nouveau message d’erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "The query cannot be completed.  Either the size of the query result is 
    larger than the maximum size of the database (2GB) or there is not enough 
    temory storage space on the disk to store the query result"
    merci de me dire comment resoudre ce problem.

    Cordialement.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Concernant le nombre de verrous, essaie ce qui est proposé dans Comment modifier un très grand nombre de données avec DAO ?

    Il y a peut-être moyen de jouer aussi sur les propriétés de la requête :
    Verrouillage = Tous les enregistrements (au lieu de Enregistrement modifié)
    Utiliser une transaction = Non

    Concernant la deuxième erreur, vérifie la taille de la base de données.
    L'erreur peut aussi se produire, si le fichier temporaire du moteur de base de données atteint 2Go.

    A+

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Par défaut
    Merci pour tes explications,
    Ma BD a en ce moment une taille d’environ 600,000KB(c-a-d largement en-dessous de la limite fatale de 2gb) et je dispose sur le disque dur d’un espace libre de 30 GB.

    Je ne sais plus quoi faire.
    Quand j’ai essaye la meme chose en VBA ,j’obtiens tjrs le meme message d’erreur 3183.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "The query cannot be completed.  Either the size of the query result is 
    larger than the maximum size of the database (2GB) or there is not enough 
    temory storage space on the disk to store the query result"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Insert_PrimaryKey()
    'inserrer un clef Primaire
     
        Dim strSQL As String
        strSQL = "ALTER TABLE MAIN ADD COLUMN RecordID COUNTER(1,1) NOT NULL CONSTRAINT PrimaryKey PRIMARY KEY"
     
        Application.DoCmd.RunSQL strSQL, False 'ok
     
    End Sub

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Je viens de faire un essai sur une base de 500Mo et une table de plus d'un millions d'enregistrements.
    J'ai la même erreur.

    Le seul moyen que j'ai trouvé c'est de ...
    - renommer la table tblxxxx en tblxxxxOld
    - copier et coller la structure (sans les données, donc) de tblxxxxOld dans une nouvelle table tblxxxx
    - ajouter une clé primaire auto-incrément à la nouvelle table tblxxxx
    - insérer les enregistrements de tblxxxxOld dans tblxxxx

    A+

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Par défaut
    Merci pour ta reponse. Elle satisfait largement ma demande.
    Mais je vais laisser la question ouverte pour un ou deux jours au cas quelq’un (ou moi-meme) trouverait une solution plus directe et/ou surtout une explication quant a pourquoi Access se comporte de cette maniere.

    Une fois encore grand merci.

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    Bonsoir Bonero,
    La solution revient en effet à créer de préférence les clés et index dans les tables vides. En complément du premier post de LedZeppII, un élément de réponse dans l'aide d'Access sur l'utilisation de RunSql :
    UtiliserTransaction Variant facultatif. Utilisez True (–1) pour inclure cette requête dans une transaction. Utilisez False (0) si vous ne voulez utiliser aucune transaction. Si vous laissez cet argument vierge, la valeur par défaut (True) est choisie.
    En clair, on utilise les transactions (BeginTrans, CommitTrans, RollBack) pour préserver l'intégrité des données : si la requète de mise à jour se termine normalement on valide (commit), sinon on annule (rollback). Mais comme tout cela est stocké en mémoire (à la fois la validation et l'annulation), cela peut générer les messages évoqués lorsque les enregistrements sont trop nombreux.
    ... Quand à savoir pourquoi Access se comporte de cette manière, il faut savoir que tout produit a ses limites et qu'il faut l'accepter et en tenir compte lors de son utilisation.

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

Discussions similaires

  1. [AC-2003] Lock count exceeded
    Par p935754 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/08/2009, 16h43
  2. Serveur ISA, IIS et file shares
    Par Jeremiah dans le forum IIS
    Réponses: 0
    Dernier message: 17/12/2008, 15h29
  3. postgres-php erreur unterminated quoted
    Par peppena dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/05/2006, 16h24
  4. [PPC][C#] File sharing et SqlNullValue exception
    Par Roach dans le forum Windows Forms
    Réponses: 28
    Dernier message: 12/10/2005, 17h40

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