Introducción a los archivos de bloqueo (laccdb y ldb) en Access

Introducción

Los archivos ".laccdb" o ".ldb" desempeñan un papel importante en el esquema de multiusuario del motor de base de datos de Microsoft Access. Los archivos ".laccdb" o ".ldb" se usan para determinar qué registros están bloqueados en una base de datos compartida y por quién. Los archivos ".laccdb" se usan con bases de datos .accdb y los archivos ".ldb" se usan con bases de datos ".mdb". Los archivos ".laccdb" y ".ldb" se conocen comúnmente como archivos de bloqueo.

Creación y eliminación automática de archivos de bloqueo

Para cada base de datos abierta para uso compartido, se crea un archivo ".laccdb" o ".ldb" para almacenar nombres de equipo y de seguridad y para colocar bloqueos de intervalo de bytes extendidos. El archivo de bloqueo siempre tiene el mismo nombre que la base de datos abierta y se encuentra en la misma carpeta que la base de datos abierta. Por ejemplo, si abre (para uso compartido) la base de datos de ejemplo Northwind.accdb en C:\users\<username>\documents\, se crea automáticamente un archivo denominado Northwind.laccdb en la misma carpeta de documentos.

Cada vez que el último usuario cierra una base de datos compartida, se elimina el archivo de bloqueo. Las únicas excepciones son cuando un usuario no tiene derechos de eliminación o cuando la base de datos está marcada como dañada. Entonces, el archivo de bloqueo no se elimina porque contiene información sobre quién estaba usando la base de datos en el momento en que la base de datos fue marcada como dañada.

Privilegios de carpeta necesarios

Si tiene previsto compartir una base de datos, el archivo de base de datos debe encontrarse en una carpeta en la que los usuarios tiene privilegios de lectura, escritura, creación y eliminación. Incluso si quiere que los usuarios tengan privilegios de archivo diferentes (por ejemplo, algunos de solo lectura y otros de lectura y escritura), todos los usuarios que compartan una base de datos deben tener permisos de lectura, escritura y creación en la carpeta. Pero puede asignar permisos de solo lectura al archivo .accdb o .mdb para usuarios individuales a la vez que permite permisos completos en la carpeta.

Nota:

Si un usuario abre una base de datos con acceso exclusivo (haciendo clic en la flecha situada a la derecha del botón Abrir y, luego, haciendo clic en Abrir en modo exclusivo), no se usará el bloqueo de registros. Por lo tanto, Microsoft Access no intenta abrir ni crear un archivo de bloqueo. Si la base de datos siempre se abre para uso exclusivo, un usuario solo debe tener privilegios de lectura y escritura en la carpeta.

Contenido del archivo de bloqueo

Por cada persona que abre una base de datos compartida, el motor de base de datos de Access escribe una entrada en el archivo ".laccdb" o ".ldb" de la base de datos. El tamaño de cada entrada es de 64 bytes. Los primeros 32 bytes contienen el nombre del equipo (como, por ejemplo, JohnDoe). Los segundos 32 bytes contienen el nombre de seguridad (como, por ejemplo, Administrador). El número máximo de usuarios simultáneos que admite el motor de base de datos de Access es 255. Por lo tanto, el tamaño del archivo de bloqueo nunca es mayor que 16 kilobytes.

Nota:

Aunque una solución de servidor de archivos puede admitir hasta 255 usuarios simultáneos, si los usuarios de la solución agregarán y actualizarán datos con frecuencia, es una buena idea no admitir más de 25 o 50 usuarios en la solución de servidor de archivos de Access. Para obtener más información, consulte Chapter 1: Understanding Microsoft Access 2000 Client/Server Development.

Cuando un usuario cierra una base de datos compartida, la entrada del usuario no se borra del archivo de bloqueo. Pero la entrada del usuario puede sobrescribirse cuando otro usuario abre la base de datos. Esto significa que no puede usar el archivo de bloqueo solo para determinar quién está usando actualmente la base de datos.

Uso del archivo de bloqueo

El motor de base de datos de Access usa la información del archivo de bloqueo para impedir que los usuarios escriban datos en páginas o registros que otros usuarios han bloqueado y para determinar quién tiene otras páginas o registros bloqueados. Si el motor de base de datos de Access detecta un conflicto de bloqueo con otro usuario, lee el archivo de bloqueo para obtener el nombre del equipo y de seguridad del usuario que tiene bloqueado el archivo o registro.

En la mayoría de las situaciones de conflicto de bloqueo, usted recibe un mensaje genérico de "Conflicto de escritura" que le permite guardar el registro, copiarlo en el Portapapeles o descartar los cambios realizados. Pero en algunas situación aparece el siguiente mensaje de error:

No se pudo bloquear la tabla <nombre de tabla>; actualmente está en uso por el usuario <nombre de seguridad> en el equipo <nombre del equipo>.

Nota:

El estado de la información en el archivo de bloqueo no tiene relación con el estado de la base de datos. Si un archivo de bloqueo se daña, todo en la base de datos debe funcionar correctamente. Pero es posible que vea texto codificado en lugar de nombres de usuario en los mensajes de conflicto de bloqueo.

Con Microsoft Visual Basic para Aplicaciones, puede generar una lista de usuarios que han iniciado sesión en una base de datos específica. Para obtener más información sobre cómo hacerlo y sobre el código de ejemplo, consulte Determinar quién ha iniciado sesión en una base de datos con UserRoster de Microsoft Jet en Access (traducción automática).