"Antalet fildelningslås har överskridits..." vid omfattande transaktionsbearbetning

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Symptom

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

Antalet låsta fildelningar har överskridits. Öka MaxLocksPerFile-registerposten.

Orsak

Felet inträffar 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, den metod eller den uppgift som innehåller anvisningar om 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 ha mer information om hur du både kan backa och återställa registret kan du klicka på följande artikelnummer och läsa artikeln i Microsoft Knowledge Base:

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

Du kan komma runt 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 regedit och klicka sedan på OK.

  3. Leta upp följande registernyckel beroende på Vilken Access-installation du har:

    Windows (MSI)-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\<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

    Anteckning

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

  4. I den högra rutan i Registereditorn dubbelklickar du på MaxLocksPerFile.

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

  6. Ändra värdet i rutan Värdedata 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-databasmotorn version 4.0.

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

Anteckning

I exempelkoden i den här artikeln används 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å Referenser på menyn Verktyg i Visual Basic Editor och kontrollera att kryssrutan Microsoft DAO 3.6-objektbibliotek är markerad.

Metoden SetOption åsidosätter tillfälligt standardantalet lås per fil. Du anger standardantalet lås per fil när du anger MaxLocksPerFile-registernyckeln. Du anger det nya värdet med metoden SetOption. Det nya värdet är giltigt tills du stänger DBEngine-objektet. Gör så här 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> (Kod)] väljer du Direktfönstermenyn Visa.

  4. Ange följande kod i direktfönstret:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

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

Om du vill bearbeta stora transaktioner ställer du in värdet MaxLocksPerFile på att uppfylla dina krav och kör sedan transaktionen i sessionen.

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

Mer information

MaxLocksPerFile-inställningen bestämmer det maximala antalet lås Microsoft Jet places mot en fil. Standardvärdet för MaxLocksPerFile är 9 500. Men ändra 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.