"Se superó el número de bloqueos de uso compartido de archivos..." error durante el procesamiento de transacciones grandes

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Síntomas

Cuando uno o varios usuarios procesan muchas transacciones en un entorno de varios usuarios, las transacciones pueden producir un error 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 contiene pasos que indican 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 hacer 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 Cómo hacer una copia de seguridad y restaurar el Registro 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: Establecer la clave del Registro en MaxLocksPerFile para aumentar el número máximo de bloqueos por archivo

  1. Haga clic en Inicio y luego en Ejecutar.

  2. Escriba regedit y, a continuación, haga clic en Aceptar.

  3. Busque la siguiente clave del Registro según la instalación de Access:

    Windows Instalación del instalador (MSI)

    • Para la versión de 32 bits de Access que se ejecuta en una versión de 32 bits de Windows o una 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 una 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 una versión de 32 bits de Windows o una 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 una 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 representa la versión de <x.0> Office (16.0 = Office 2016, Office 2019 o Office 365, 15.0 = Office 2013).

  4. En el panel derecho del Editor del Registro, haga doble clic en MaxLocksPerFile.

  5. En el cuadro de diálogo Editar valor DWORD, seleccione Decimal.

  6. 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 el motor de base de datos de Microsoft Jet versión 4.0.

Método 2: Usar el método SetOption para cambiar temporalmente MaxLocksPerFile

Nota

El código de ejemplo de este artículo usa objetos de acceso a datos de Microsoft. 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. Se establece el número predeterminado de bloqueos por archivo al establecer la clave del Registro MaxLocksPerFile. 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:

  1. Abra Microsoft Access.

  2. Abra una base de datos y, a continuación, presione Alt+F11 para iniciar el editor Visual Basic.

  3. En la ventana Microsoft Visual Basic - <Database Name> -[ <Module Name> (Código)], seleccione Ventana inmediata en el menú Ver.

  4. En Ventana inmediata, escriba el código siguiente:

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. Presione la tecla ENTRAR para ejecutar la línea de código. Este comando establece temporalmente el valor de MaxLocksPerFile en 15 000.

Para procesar transacciones de gran tamaño, establezca el valor MaxLocksPerFile para satisfacer sus requisitos 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 9.500. Sin embargo, no cambie este valor si está trabajando en un servidor Novell NetWare, ya que el máximo de bloqueos de registros de servidor por conexión es de 10 000.