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

Problembeschreibung

Wenn ein oder mehrere Benutzer viele Transaktionen in einer Umgebung mit mehreren Benutzern verarbeiten, können die Transaktionen mit der folgenden Fehlermeldung fehlschlagen:

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

Ursache

Der Fehler tritt auf, wenn die Anzahl der zum Ausführen einer Transaktion erforderlichen Sperren 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: Festlegen des Registrierungsschlüssels auf MaxLocksPerFile, 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 regeditein, und klicken Sie dann auf "OK".

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

    Installation von Windows Installer (MSI)

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

      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-Los-Installation

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

      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 <x.0-Platzhalter> stellt Ihre Version von Office dar (16.0 = Office 2016, Office 2019, Office LTSC 2021 oder Microsoft 365, 15.0 = Office 2013).

  4. Doppelklicken Sie im rechten Bereich des Registrierungs-Editors auf MaxLocksPerFile.

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

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

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

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

Hinweis

Der Beispielcode in diesem Artikel verwendet Microsoft Data Access-Objekte. Damit dieser Code ordnungsgemäß ausgeführt werden kann, müssen Sie auf die Microsoft DAO 3.6-Objektbibliothek verweisen. Klicken Sie dazu 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 der 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 -<Database Name>-[<Module Name> (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. Mit diesem Befehl wird der MaxLocksPerFile-Wert vorübergehend auf 15.000 festgelegt.

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 MaxLocksPerFile-Einstellung bestimmt die maximale Anzahl von Sperren, die Microsoft Jet für eine Datei platziert. Der Standardmäßige MaxLocksPerFile-Wert ist 9.500. Ändern Sie diesen Wert jedoch nicht, wenn Sie auf einem Novell NetWare-Server arbeiten, da die maximale Anzahl von Serverdatensatzsperren pro Verbindung 10.000 beträgt.