"Anzahl der Dateifreigabesperren überschritten..." Fehler bei der Verarbeitung großer Transaktionen

Symptome

Wenn ein oder mehrere Benutzer viele Transaktionen in einer Umgebung mit mehreren Benutzern verarbeiten, schlagen die Transaktionen möglicherweise mit der folgenden Fehlermeldung fehl:

Anzahl der Dateisperrungen überschritten. Erhöhen Sie den Registryeintrag für MaxLocksPerFile.

Ursache

Der Fehler tritt auf, wenn die Anzahl der Sperren, die zum Ausführen einer Transaktion erforderlich sind, die maximale Anzahl von Sperren pro Datei überschreitet.

Problemumgehung

Wichtig: Dieser Abschnitt bzw. die Methoden- oder Aufgabenbeschreibung enthält Hinweise zum Ändern der Registrierung. Durch die falsche Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Daher ist es wichtig, bei der Ausführung der folgenden Schritte sorgfältig vorzugehen. Für zusätzlichen Schutz sichern Sie die Registrierung, bevor Sie sie ändern. Sie können die Registrierung wiederherstellen, wenn ein Problem auftritt. Weitere Informationen zum Erstellen und Wiederherstellen einer Sicherungskopie der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:

322756 Sichern und Wiederherstellen der Registrierung in Windows

Um dieses Problem zu umgehen, erhöhen Sie die maximale Anzahl von Sperren pro Datei. Wenden Sie hierzu eine der folgenden Methoden an.

Methode 1: Legen Sie den Registrierungsschlüssel auf MaxLocksPerFile fest, um die maximale Anzahl von Sperren pro Datei zu erhöhen.

  1. Klicken Sie auf Start und anschließend auf Ausführen.

  2. Geben Sie ein regedit, und klicken Sie dann auf OK.

  3. Suchen Sie je nach Access-Installation den folgenden Registrierungsschlüssel:

    Installation von Windows Installer (MSI)

    • Für die 32-Bit-Version von Access unter der 32-Bit-Version von Windows oder für die 64-Bit-Version von Access unter der 64-Bit-Version von Windows

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

    • Für die 32-Bit-Version von Access, die unter der 64-Bit-Version von Windows ausgeführt wird

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

    Klick-und-Run-Installation

    • Für die 32-Bit-Version von Access unter der 32-Bit-Version von Windows oder für die 64-Bit-Version von Access unter der 64-Bit-Version von Windows

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

    • Für die 32-Bit-Version von Access, die unter der 64-Bit-Version von Windows ausgeführt wird

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

    Hinweis

    Der Platzhalter <x.0> steht für Ihre Version von Office (16.0 = Office 2016, Office 2019, Office LTSC 2021 oder Microsoft 365, 15.0 = Office 2013).

  4. Doppelklicken Sie im rechten Bereich der Registrierungs-Editor auf MaxLocksPerFile.

  5. Wählen Sie im Dialogfeld DWORD-Wert bearbeiten die Option Dezimal aus.

  6. Ändern Sie den Wert des Datenfelds Wert nach Bedarf, und wählen Sie dann OK aus.

Beachten Sie , dass diese Methode die Registrierungseinstellung für alle Anwendungen ändert, die Version 4.0 der Microsoft Jet-Datenbank-Engine verwenden.

Methode 2: Verwenden der SetOption-Methode zum vorübergehenden Ändern von MaxLocksPerFile

Hinweis

Der Beispielcode in diesem Artikel verwendet Microsoft Data Access Objects. Damit dieser Code ordnungsgemäß ausgeführt wird, müssen Sie auf die Microsoft DAO 3.6-Objektbibliothek verweisen. Klicken Sie hierzu im Visual Basic-Editor im Menü Extras auf Verweise, und stellen Sie sicher, dass das Kontrollkästchen Microsoft DAO 3.6-Objektbibliothek aktiviert ist.

Die SetOption-Methode überschreibt vorübergehend die Standardanzahl von Sperren pro Datei. Sie legen die Standardanzahl von Sperren pro Datei fest, wenn Sie den Registrierungsschlüssel MaxLocksPerFile festlegen. Sie legen den neuen Wert mithilfe der SetOption-Methode fest. Der neue Wert ist gültig, bis Sie das DBEngine-Objekt schließen. Führen Sie die folgenden Schritte aus, um Methode 2 zu verwenden:

  1. Öffnen Sie Microsoft Access.

  2. Öffnen Sie eine Datenbank, und drücken Sie dann ALT+F11, um den Visual Basic-Editor zu starten.

  3. Wählen Sie im Fenster Microsoft Visual Basic -<Datenbankname>-[<Modulname> (Code)] im Menü Ansicht die Option Direktfenster aus.

  4. Geben Sie im Direktfenster den folgenden Code ein:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Drücken Sie die EINGABETASTE, um die Codezeile auszuführen. Dieser Befehl legt den MaxLocksPerFile-Wert vorübergehend auf 15.000 fest.

Um große Transaktionen zu verarbeiten, legen Sie den MaxLocksPerFile-Wert so fest, dass er Ihren Anforderungen entspricht, und führen Sie dann die Transaktionen in der Sitzung aus.

Änderungen, die Sie mithilfe der SetOption-Methode an der MaxLocksPerFile-Einstellung vornehmen, sind nur für die aktuelle Sitzung verfügbar.

Weitere Informationen

Die Einstellung MaxLocksPerFile bestimmt die maximale Anzahl von Sperren, die Microsoft Jet für eine Datei platziert. Der Standardwert von MaxLocksPerFile ist 9.500. Ändern Sie diesen Wert jedoch nicht, wenn Sie auf einem Novell NetWare-Server arbeiten, da die maximale Anzahl von Servereintragssperren pro Verbindung 10.000 beträgt.