"Antalet fildelningslås har överskridits..." fel vid bearbetning av stora transaktioner

Symptom

När en eller flera användare bearbetar många transaktioner i en miljö med flera användare kan transaktionerna misslyckas med följande felmeddelande:

Antalet fildelningslås har överskridits. Öka registerposten MaxLocksPerFile.

Orsak

Felet uppstår om antalet lås som krävs för att utföra en transaktion överskrider det maximala antalet lås per fil.

Lösning

Viktigt! Det här avsnittet, metoden eller uppgiften innehåller steg som berättar hur du ändrar registret. Det kan uppstå allvarliga problem om du gör detta felaktigt. Följ därför instruktionerna noga, och säkerhetskopiera registret innan du gör några ändringar i det. Då kan du återställa registret om det uppstår problem. Om du vill veta mer om hur du säkerhetskopierar och återställer registret klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

322756 Hur man säkerhetskopierar och återställer registret i Windows

Du kan undvika det här problemet genom att öka det maximala antalet lås per fil. Detta gör du genom att använda någon av följande metoder.

Metod 1: Ställ in registernyckeln på MaxLocksPerFile för att öka det maximala antalet lås per fil

  1. Klicka på Start och därefter på Kör.

  2. Skriv regeditoch klicka sedan på OK.

  3. Leta upp följande registernyckel beroende på din Access-installation:

    Installation av Windows Installer (MSI)

    • För 32-bitarsversionen av Access som körs på 32-bitarsversionen av Windows eller 64-bitarsversionen av Access som körs på 64-bitarsversionen av Windows

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

    • För 32-bitarsversionen av Access som körs på 64-bitarsversionen av Windows

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

    Klicka-och-kör-installation

    • För 32-bitarsversionen av Access som körs på 32-bitarsversionen av Windows eller 64-bitarsversionen av Access som körs på 64-bitarsversionen av Windows

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

    • För 32-bitarsversionen av Access som körs på 64-bitarsversionen av Windows

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

    Obs!

    Platshållaren <x.0> representerar din version av Office (16.0 = Office 2016, Office 2019, Office LTSC 2021 eller Microsoft 365, 15.0 = Office 2013).

  4. Dubbelklicka på MaxLocksPerFile i den högra rutan i Register Editor.

  5. I dialogrutan Redigera DWORD-värde väljer du Decimal.

  6. Ändra värdet för datarutan Värde efter behov och välj sedan OK.

Observera att den här metoden ändrar registerinställningen för alla program som använder Microsoft Jet-databasmotor version 4.0.

Metod 2: Använd metoden SetOption för att tillfälligt ändra MaxLocksPerFile

Obs!

Exempelkoden i den här artikeln använder Microsoft Data Access-objekt. För att den här koden ska köras korrekt måste du referera till Microsoft DAO 3.6-objektbiblioteket. Det gör du genom att klicka på Referenserpå verktygsmenyn i Visual Basic-Editor och kontrollera att kryssrutan Objektbibliotek för Microsoft DAO 3.6 är markerad.

Metoden SetOption åsidosätter tillfälligt standardantalet lås per fil. Du anger standardantalet lås per fil när du anger registernyckeln MaxLocksPerFile. Du anger det nya värdet med hjälp av metoden SetOption. Det nya värdet är giltigt tills du stänger DBEngine-objektet. Följ dessa steg om du vill använda metod 2:

  1. Öppna Microsoft Access.

  2. Öppna en databas och tryck sedan på Alt+F11 för att starta Visual Basic-redigeraren.

  3. I fönstret Microsoft Visual Basic -<Database Name>-[<Module Name> (Code)] väljer du Omedelbart fönster på menyn Visa .

  4. I Omedelbart fönster anger du följande kod:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Tryck på RETUR för att köra kodraden. Det här kommandot anger tillfälligt värdet MaxLocksPerFile till 15 000.

Om du vill bearbeta stora transaktioner anger du värdet MaxLocksPerFile så att det uppfyller dina behov och kör sedan transaktionerna i sessionen.

Ändringar som du gör i inställningen MaxLocksPerFile med hjälp av metoden SetOption är endast tillgängliga för den aktuella sessionen.

Mer information

Inställningen MaxLocksPerFile avgör det maximala antalet lås som Microsoft Jet placerar mot en fil. MaxLocksPerFile-standardvärdet är 9 500. Ändra dock inte det här värdet om du arbetar på en Novell NetWare-server, eftersom det maximala antalet lås för serverpost per anslutning är 10 000.