"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 Backa och återställa registret i Windows

Du kan komma runt det här problemet genom att öka det maximala antalet lås per fil. Det gör du på något av följande sätt.

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. Använd lämplig metod:

    • I Microsoft Access 2000, Microsoft Access 2002 och Microsoft Office Access 2003 som körs på ett 32-bitars Windows-operativsystem använder du Registereditorn för att hitta följande registernyckel:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4,0

      I Microsoft Access 2000, i Microsoft Access 2002 och i Microsoft Office Access 2003 som körs på ett 64-bitars Windows-operativsystem, använder du Registereditorn för att hitta följande registernyckel:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4,0

    • Använd Registereditorn för att hitta följande registernyckel i Microsoft Office Access 2007 som körs på ett 32-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

      Använd Registereditorn för att hitta följande registernyckel i Microsoft Office Access 2007 som körs på ett 64-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

    • Använd Registereditorn för att hitta följande registernyckel i Microsoft Access 2010 som körs på ett 32-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE

      Använd Registereditorn för att hitta följande registernyckel i Microsoft Office Access 2010 som körs på ett 64-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE

    • I Microsoft Access 2013 som körs på ett 32-bitars Windows-operativsystem använder du Registereditorn för att hitta följande registernyckel:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\ACE

      Använd Registereditorn för att hitta följande registernyckel i Microsoft Office Access 2013 som körs på ett 64-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\ACE

    • I Microsoft Access 2016 som körs på ett 32-bitars Windows-operativsystem använder du Registereditorn för att hitta följande registernyckel:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE

      Använd Registereditorn för att hitta följande registernyckel i Microsoft Office Access 2016 som körs på ett 64-bitars Windows-operativsystem:

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE

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

  5. Klicka på Decimal i dialogrutan Redigera DWORD-värde.

  6. Ändra värdet i rutan Värdedata efter behov och klicka sedan på 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)] klickar du på Direktfönster i menyn Visa.
  4. Ange följande kod i direktfönstret.

DAO. DBEngine.SetOption dbmaxlocksperfile,15000 5. Tryck på RETUR för att köra kodraden.

Obs! Då anges värdet för MaxLocksPerFile tillfälligt till 15 000.

Om du vill bearbeta stora transaktioner ställer du in maxLocksPerFile-värdet 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.