"Het aantal vergrendelingen voor het delen van bestanden is overschreden..." fout tijdens verwerking van grote transacties

Symptomen

Wanneer een of meer gebruikers veel transacties verwerken in een omgeving met meerdere gebruikers, kunnen de transacties mislukken met het volgende foutbericht:

Het aantal vergrendelingen voor het delen van bestanden is overschreden. Verhoog de registervermelding MaxLocksPerFile.

Oorzaak

De fout treedt op als het aantal vergrendelingen dat nodig is om een transactie uit te voeren het maximum aantal vergrendelingen per bestand overschrijdt.

Tijdelijke oplossing

Belangrijk Deze sectie, methode of taak bevat stappen voor het bewerken van het register. Als u het register op onjuiste wijze wijzigt, kunnen er echter grote problemen optreden. Het is dan ook belangrijk dat u deze stappen zorgvuldig uitvoert. Maak een back-up van het register voordat u wijzigingen aanbrengt. Als er een probleem optreedt, kunt u het register altijd nog herstellen. Als u meer informatie wilt over het maken van een back-up van het register en het herstellen van het register, klikt u op de volgende artikelnummers in de Microsoft Knowledge Base:

322756 Een back-up van het register maken en het register terugzetten in Windows

U kunt dit probleem omzeilen door het maximum aantal vergrendelingen per bestand te verhogen. Gebruik een van de volgende manieren om dit te doen.

Methode 1: Stel de registersleutel in op MaxLocksPerFile om het maximum aantal vergrendelingen per bestand te verhogen

  1. Klik op Start en vervolgens op Uitvoeren.

  2. Typ regediten klik op OK.

  3. Zoek de volgende registersleutel, afhankelijk van uw Access-installatie:

    Installatie van Windows Installer (MSI)

    • Voor de 32-bits versie van Access die wordt uitgevoerd op de 32-bits versie van Windows of de 64-bits versie van Access die wordt uitgevoerd op een 64-bits versie van Windows

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    • Voor de 32-bits versie van Access die wordt uitgevoerd op de 64-bits versie van Windows

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    Klik-en-Klaar-installatie

    • Voor de 32-bits versie van Access die wordt uitgevoerd op de 32-bits versie van Windows of de 64-bits versie van Access die wordt uitgevoerd op een 64-bits versie van Windows

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    • Voor de 32-bits versie van Access die wordt uitgevoerd op de 64-bits versie van Windows

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    Opmerking

    De <tijdelijke aanduiding x.0> vertegenwoordigt uw versie van Office (16.0 = Office 2016, Office 2019, Office LTSC 2021 of Microsoft 365, 15.0 = Office 2013).

  4. Dubbelklik in het rechterdeelvenster van Register Editor op MaxLocksPerFile.

  5. Selecteer in het dialoogvenster DWORD-waarde bewerkende optie Decimaal.

  6. Wijzig de waarde van het vak Waardegegevens zo nodig en selecteer OK.

Houd er rekening mee dat met deze methode de registerinstelling wordt gewijzigd voor alle toepassingen die microsoft Jet-database-engine versie 4.0 gebruiken.

Methode 2: Gebruik de methode SetOption om MaxLocksPerFile tijdelijk te wijzigen

Opmerking

De voorbeeldcode in dit artikel maakt gebruik van Microsoft Data Access-objecten. Deze code wordt alleen correct uitgevoerd als u verwijst naar de Microsoft DAO 3.6-objectbibliotheek. Klik hiervoor op Verwijzingen in het menu Extra in de Visual Basic-Editor en zorg ervoor dat het selectievakje Microsoft DAO 3.6-objectbibliotheek is ingeschakeld.

De methode SetOption overschrijft tijdelijk het standaardaantal vergrendelingen per bestand. U stelt het standaard aantal vergrendelingen per bestand in wanneer u de registersleutel MaxLocksPerFile instelt. U stelt de nieuwe waarde in met behulp van de methode SetOption. De nieuwe waarde is geldig totdat u het DBEngine-object sluit. Voer de volgende stappen uit om methode 2 te gebruiken:

  1. Open Microsoft Access.

  2. Open een database en druk op Alt+F11 om de Visual Basic-editor te starten.

  3. Selecteer in het venster Microsoft Visual Basic -<Databasenaam>-[<Modulenaam> (code)]de optie Direct venster in het menu Beeld .

  4. Voer in Direct venster de volgende code in:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Druk op Enter om de regel code uit te voeren. Met deze opdracht wordt de waarde MaxLocksPerFile tijdelijk ingesteld op 15.000.

Als u grote transacties wilt verwerken, stelt u de waarde MaxLocksPerFile in om aan uw behoeften te voldoen en voert u vervolgens de transacties uit in de sessie.

Wijzigingen die u aanbrengt in de instelling MaxLocksPerFile met behulp van de methode SetOption, zijn alleen beschikbaar voor de huidige sessie.

Meer informatie

De instelling MaxLocksPerFile bepaalt het maximum aantal vergrendelingen dat Microsoft Jet voor een bestand plaatst. De standaardwaarde van MaxLocksPerFile is 9500. Wijzig deze waarde echter niet als u op een Novell NetWare-server werkt, omdat het maximum aantal serverrecordvergrendelingen per verbinding 10.000 is.