"Il numero di blocchi di condivisione file è stato superato..." errore durante l'elaborazione di transazioni di grandi dimensioni

Sintomi

Quando uno o più utenti elaborano molte transazioni in un ambiente con più utenti, le transazioni potrebbero non riuscire con il messaggio di errore seguente:

Superato il numero di blocchi per la condivisione di file. Aumentare la voce di registro MaxLocksPerFile.

Causa

L'errore si verifica se il numero di blocchi necessari per eseguire una transazione supera il numero massimo di blocchi per file.

Soluzione alternativa

Importante: in questa sezione, metodo o attività viene illustrata la procedura per modificare il Registro di sistema. Poiché l'errata modifica del Registro di sistema può causare seri problemi, Di conseguenza, attenersi scrupolosamente alla procedura indicata. Per una maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. In questo modo sarà possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni sull'esecuzione del backup e del ripristino del Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:

322756 Come eseguire il backup e il ripristino del Registro di sistema in Windows

Per risolvere questo problema, aumentare il numero massimo di blocchi per file. A tale scopo, utilizzare uno dei seguenti metodi.

Metodo 1: impostare la chiave del Registro di sistema su MaxLocksPerFile per aumentare il numero massimo di blocchi per file

  1. Fare clic su Start quindi scegliere Esegui.

  2. Digitare regedite quindi fare clic su OK.

  3. Individuare la chiave del Registro di sistema seguente a seconda dell'installazione di Access:

    Installazione di Windows Installer (MSI)

    • Per la versione a 32 bit di Access in esecuzione nella versione a 32 bit di Windows o nella versione a 64 bit di Access in esecuzione nella versione a 64 bit di Windows

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

    • Per la versione a 32 bit di Access in esecuzione nella versione a 64 bit di Windows

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

    Installazione a portata di clic

    • Per la versione a 32 bit di Access in esecuzione nella versione a 32 bit di Windows o nella versione a 64 bit di Access in esecuzione nella versione a 64 bit di Windows

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

    • Per la versione a 32 bit di Access in esecuzione nella versione a 64 bit di Windows

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

    Nota

    Il segnaposto <x.0> rappresenta la versione di Office in uso (16.0 = Office 2016, Office 2019, Office LTSC 2021 o Microsoft 365, 15.0 = Office 2013).

  4. Nel riquadro destro di Registry Editor fare doppio clic su MaxLocksPerFile.

  5. Nella finestra di dialogo Modifica valore DWORD selezionare Decimal.

  6. Modificare il valore della casella Dati valore in base alle esigenze e quindi selezionare OK.

Si noti che questo metodo modifica l'impostazione del Registro di sistema per tutte le applicazioni che usano il motore di database Microsoft Jet versione 4.0.

Metodo 2: usare il metodo SetOption per modificare temporaneamente MaxLocksPerFile

Nota

Il codice di esempio in questo articolo usa oggetti di Microsoft Data Access. Per l'esecuzione corretta di questo codice, è necessario fare riferimento alla libreria di oggetti Microsoft DAO 3.6. A tale scopo, fare clic su Riferimenti nel menu Strumenti in Visual Basic Editor e verificare che la casella di controllo Libreria oggetti di Microsoft DAO 3.6 sia selezionata.

Il metodo SetOption esegue temporaneamente l'override del numero predefinito di blocchi per file. Impostare il numero predefinito di blocchi per file quando si imposta la chiave del Registro di sistema MaxLocksPerFile. È possibile impostare il nuovo valore usando il metodo SetOption. Il nuovo valore è valido fino alla chiusura dell'oggetto DBEngine. Per usare il metodo 2, seguire questa procedura:

  1. Aprire Microsoft Access.

  2. Aprire un database e quindi premere ALT+F11 per avviare l'editor di Visual Basic.

  3. Nella finestra Microsoft Visual Basic -<Nome database>-[<Nome> modulo (codice)] selezionare Finestra immediata nel menu Visualizza .

  4. In Finestra immediata immettere il codice seguente:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Premere INVIO per eseguire la riga di codice. Questo comando imposta temporaneamente il valore MaxLocksPerFile su 15.000.

Per elaborare transazioni di grandi dimensioni, impostare il valore MaxLocksPerFile in base alle esigenze e quindi eseguire le transazioni nella sessione.

Le modifiche apportate all'impostazione MaxLocksPerFile tramite il metodo SetOption sono disponibili solo per la sessione corrente.

Ulteriori informazioni

L'impostazione MaxLocksPerFile determina il numero massimo di blocchi impostato da Microsoft Jet su un file. Il valore predefinito di MaxLocksPerFile è 9.500. Tuttavia, non modificare questo valore se si sta lavorando su un server Novell NetWare, perché il numero massimo di blocchi di record del server per ogni connessione è 10.000.