"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
Fare clic su Start quindi scegliere Esegui.
Digitare
regedit
e quindi fare clic su OK.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).
Nel riquadro destro di Registry Editor fare doppio clic su MaxLocksPerFile.
Nella finestra di dialogo Modifica valore DWORD selezionare Decimal.
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:
Aprire Microsoft Access.
Aprire un database e quindi premere ALT+F11 per avviare l'editor di Visual Basic.
Nella finestra Microsoft Visual Basic -<Nome database>-[<Nome> modulo (codice)] selezionare Finestra immediata nel menu Visualizza .
In Finestra immediata immettere il codice seguente:
DAO.DBEngine.SetOption dbmaxlocksperfile,15000
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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per