"Przekroczono liczbę blokad udostępniania plików..." błąd podczas przetwarzania dużych transakcji

Symptomy

Gdy co najmniej jeden użytkownik przetwarza wiele transakcji w środowisku wielu użytkowników, transakcje mogą zakończyć się niepowodzeniem z następującym komunikatem o błędzie:

Przekroczono liczbę blokad udostępniania plików. Zwiększ wpis rejestru MaxLocksPerFile.

Przyczyna

Błąd występuje, jeśli liczba blokad wymaganych do wykonania transakcji przekracza maksymalną liczbę blokad na plik.

Obejście problemu

Ważne W tej sekcji, metodzie lub zadaniu podano informacje dotyczące modyfikowania rejestru. Niepoprawne zmodyfikowanie rejestru może jednak być przyczyną poważnych problemów. Dlatego należy uważnie wykonywać podane czynności. Dla większego bezpieczeństwa przed zmodyfikowaniem rejestru należy wykonać jego kopię zapasową. Dzięki temu będzie można przywrócić rejestr w przypadku wystąpienia problemu. Aby uzyskać więcej informacji dotyczących wykonywania kopii zapasowej i przywracania rejestru, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

322756 Jak wykonać kopię zapasową rejestru i przywrócić go w systemie Windows

Aby obejść ten problem, zwiększ maksymalną liczbę blokad na plik. Aby to zrobić, należy skorzystać z jednej z następujących metod.

Metoda 1. Ustaw klucz rejestru na wartość MaxLocksPerFile, aby zwiększyć maksymalną liczbę blokad na plik

  1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.

  2. Wpisz regedit, a następnie kliknij przycisk OK.

  3. Znajdź następujący klucz rejestru w zależności od instalacji programu Access:

    Instalacja Instalatora Windows (MSI)

    • W przypadku 32-bitowej wersji programu Access działającej w 32-bitowej wersji systemu Windows lub 64-bitowej wersji programu Access działającej w 64-bitowej wersji systemu Windows

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

    • W przypadku 32-bitowej wersji programu Access działającej w 64-bitowej wersji systemu Windows

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

    Instalacja typu "kliknij, aby uruchomić"

    • W przypadku 32-bitowej wersji programu Access działającej w 32-bitowej wersji systemu Windows lub 64-bitowej wersji programu Access działającej w 64-bitowej wersji systemu Windows

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

    • W przypadku 32-bitowej wersji programu Access działającej w 64-bitowej wersji systemu Windows

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

    Uwaga

    Symbol zastępczy <x.0> reprezentuje twoją wersję pakietu Office (16.0 = Office 2016, Office 2019, Office LTSC 2021 lub Microsoft 365, 15.0 = Office 2013).

  4. W okienku po prawej stronie Redaktor rejestru kliknij dwukrotnie pozycję MaxLocksPerFile.

  5. W oknie dialogowym Edytowanie wartości DWORD wybierz pozycję Dziesiętne.

  6. Zmodyfikuj wartość pola Dane wartości zgodnie z potrzebami, a następnie wybierz przycisk OK.

Należy pamiętać , że ta metoda zmienia ustawienie rejestru dla wszystkich aplikacji korzystających z aparatu bazy danych Microsoft Jet w wersji 4.0.

Metoda 2. Użyj metody SetOption, aby tymczasowo zmienić parametr MaxLocksPerFile

Uwaga

Przykładowy kod w tym artykule używa obiektów programu Microsoft Data Access. Aby ten kod działał poprawnie, należy odwołać się do biblioteki obiektów microsoft DAO 3.6. W tym celu kliknij pozycję Odwołania w menu Narzędzia w Redaktor Visual Basic i upewnij się, że zaznaczono pole wyboru Biblioteka obiektów microsoft DAO 3.6.

Metoda SetOption tymczasowo zastępuje domyślną liczbę blokad na plik. Domyślną liczbę blokad na plik ustawia się podczas ustawiania klucza rejestru MaxLocksPerFile. Nową wartość można ustawić przy użyciu metody SetOption. Nowa wartość jest prawidłowa do momentu zamknięcia obiektu DBEngine. Aby użyć metody 2, wykonaj następujące kroki:

  1. Otwórz program Microsoft Access.

  2. Otwórz bazę danych, a następnie naciśnij klawisze Alt+F11, aby uruchomić edytor Visual Basic.

  3. W oknie Microsoft Visual Basic -<Database Name>-[<Nazwa> modułu (kod)] wybierz pozycję Okno natychmiastowe w menu Widok .

  4. W oknie natychmiastowym wprowadź następujący kod:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Naciśnij klawisz ENTER, aby uruchomić wiersz kodu. To polecenie tymczasowo ustawia wartość MaxLocksPerFile na 15 000.

Aby przetworzyć duże transakcje, ustaw wartość MaxLocksPerFile w celu spełnienia wymagań, a następnie uruchom transakcje w sesji.

Zmiany wprowadzone w ustawieniu MaxLocksPerFile przy użyciu metody SetOption są dostępne tylko dla bieżącej sesji.

Więcej informacji

Ustawienie MaxLocksPerFile określa maksymalną liczbę blokad miejsc programu Microsoft Jet dla pliku. Domyślna wartość MaxLocksPerFile to 9500. Nie zmieniaj jednak tej wartości, jeśli pracujesz na serwerze Novell NetWare, ponieważ maksymalna liczba blokad rekordów serwera na połączenie wynosi 10 000.