"Se superó el número de bloqueos de uso compartido de archivos..." error durante el procesamiento de transacciones grandes
Síntomas
Cuando uno o varios usuarios procesan muchas transacciones en un entorno de varios usuarios, es posible que se produzca un error en las transacciones con el siguiente mensaje de error:
Se excedió el número de bloqueos de archivos compartidos. Aumente el valor de la entrada MaxLocksPerFile del Registro.
Causa
El error se produce si el número de bloqueos necesarios para realizar una transacción supera el número máximo de bloqueos por archivo.
Solución alternativa
Importante: esta sección, método o tarea incluye pasos que le indicarán cómo modificar el registro. No obstante, pueden producirse problemas graves si modifica el registro de manera incorrecta. En consecuencia, asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, cree una copia de seguridad del registro antes de modificarlo. Después, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo realizar una copia de seguridad y restaurar el Registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 Hacer una copia de seguridad del Registro y restaurarlo en Windows
Para solucionar este problema, aumente el número máximo de bloqueos por archivo. Para ello, use uno de los métodos siguientes.
Método 1: Establezca la clave del Registro en MaxLocksPerFile para aumentar el número máximo de bloqueos por archivo.
Haga clic en Inicio y luego en Ejecutar.
Escriba
regedit
y, a continuación, haga clic en Aceptar.Busque la siguiente clave del Registro en función de la instalación de Access:
Instalación de Windows Installer (MSI)
Para la versión de 32 bits de Access que se ejecuta en la versión de 32 bits de Windows o la versión de 64 bits de Access que se ejecuta en la versión de 64 bits de Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE
Para la versión de 32 bits de Access que se ejecuta en la versión de 64 bits de Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE
Instalación de hacer clic y ejecutar
Para la versión de 32 bits de Access que se ejecuta en la versión de 32 bits de Windows o la versión de 64 bits de Access que se ejecuta en la versión de 64 bits de Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE
Para la versión de 32 bits de Access que se ejecuta en la versión de 64 bits de Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE
Nota:
El marcador de posición <x.0> representa su versión de Office (16.0 = Office 2016, Office 2019, Office LTSC 2021 o Microsoft 365, 15.0 = Office 2013).
En el panel derecho de Editor del Registro, haga doble clic en MaxLocksPerFile.
En el cuadro de diálogo Editar valor DWORD , seleccione Decimal.
Modifique el valor del cuadro Datos de valor según sea necesario y, a continuación, seleccione Aceptar.
Tenga en cuenta que este método cambia la configuración del Registro para todas las aplicaciones que usan la versión 4.0 del motor de base de datos de Microsoft Jet.
Método 2: Usar el método SetOption para cambiar temporalmente MaxLocksPerFile
Nota:
En el código de ejemplo de este artículo se usan objetos de Microsoft Data Access. Para que este código se ejecute correctamente, debe hacer referencia a la biblioteca de objetos de Microsoft DAO 3.6. Para ello, haga clic en Referencias en el menú Herramientas del Editor de Visual Basic y asegúrese de que la casilla Biblioteca de objetos de Microsoft DAO 3.6 esté activada.
El método SetOption invalida temporalmente el número predeterminado de bloqueos por archivo. Al establecer la clave del Registro MaxLocksPerFile, se establece el número predeterminado de bloqueos por archivo. El nuevo valor se establece mediante el método SetOption. El nuevo valor es válido hasta que se cierra el objeto DBEngine. Para usar el método 2, siga estos pasos:
Abra Microsoft Access.
Abra una base de datos y presione Alt+F11 para iniciar el editor de Visual Basic.
En la ventana Microsoft Visual Basic -<Nombre> de base de datos-[<Nombre> del módulo (código)] , seleccione Ventana inmediata en el menú Ver .
En Ventana inmediata, escriba el código siguiente:
DAO.DBEngine.SetOption dbmaxlocksperfile,15000
Presione la tecla ENTRAR para ejecutar la línea de código. Este comando establece temporalmente el valor MaxLocksPerFile en 15 000.
Para procesar transacciones grandes, establezca el valor MaxLocksPerFile para satisfacer sus necesidades y, a continuación, ejecute las transacciones en la sesión.
Los cambios realizados en la configuración MaxLocksPerFile mediante el método SetOption solo están disponibles para la sesión actual.
Más información
La configuración MaxLocksPerFile determina el número máximo de bloqueos que Microsoft Jet coloca en un archivo. El valor predeterminado de MaxLocksPerFile es 9500. Sin embargo, no cambie este valor si trabaja en un servidor de Novell NetWare, ya que el número máximo de bloqueos de registros de servidor por conexión es de 10 000.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de