Introduction aux fichiers de verrouillage (laccdb et ldb) dans Access

Introduction

Le fichier « .laccdb » ou « .ldb » joue un rôle important dans le schéma multi-utilisateur du moteur de base de données Microsoft Access. Il permet de déterminer les enregistrements qui sont verrouillés dans une base de données partagée, ainsi que les utilisateurs qui les verrouillent. Le fichier « .laccdb » est utilisé avec les bases de données « .accdb » et le fichier « .ldb » avec les bases de données « .mdb ». Les fichiers « .laccdb » et « .ldb » sont communément appelés « fichiers de verrouillage ».

Création et suppression automatiques des fichiers de verrouillage

Pour chaque base de données ouverte pour une utilisation partagée, un fichier « .laccdb » ou « .ldb » est créé pour stocker les noms d’ordinateur et de sécurité, ainsi que pour placer des verrous de plage d’octets étendue. Le fichier de verrouillage porte toujours le même nom que la base de données ouverte et se trouve dans le même dossier que cette base de données. Par exemple, si vous ouvrez (pour une utilisation partagée) l’exemple de base de données Comptoirs.accdb dans C:\users\<username>\documents\, un fichier nommé Comptoirs.laccdb est créé automatiquement dans le même dossier de documents.

Chaque fois que le dernier utilisateur ferme une base de données partagée, le fichier de verrouillage est supprimé. Les seules exceptions sont quand un utilisateur ne dispose pas des droits de suppression ou quand la base de données est marquée comme étant endommagée. Dans ce cas, le fichier de verrouillage n’est pas supprimé, car il contient des informations sur l’utilisateur de la base de données au moment où elle a été marquée comme étant endommagée.

Privilèges de dossier requis

Si vous envisagez de partager une base de données, le fichier de base de données doit se trouver dans un dossier pour lequel les utilisateurs disposent des privilèges de lecture, d’écriture, de création et de suppression. Même si vous souhaitez que les utilisateurs disposent de privilèges de fichier différents (par exemple, certains en lecture seule et d’autres en lecture-écriture), tous les utilisateurs qui partagent une base de données doivent disposer des autorisations de lecture, d’écriture et de création pour le dossier. Toutefois, vous pouvez attribuer des autorisations en lecture seule au fichier .accdb ou .mdb pour chaque utilisateur tout en accordant des autorisations complètes au dossier.

Remarque

Si un utilisateur ouvre une base de données avec un accès exclusif (en cliquant sur la flèche à droite du bouton Ouvrir, puis en cliquant sur Ouvrir en exclusif), le verrouillage des enregistrements n’est pas utilisé. Par conséquent, Microsoft Access ne tente pas d’ouvrir ou de créer un fichier de verrouillage. Si la base de données est toujours ouverte pour une utilisation exclusive, un utilisateur ne doit disposer que des privilèges de lecture et d’écriture pour le dossier.

Contenu du fichier de verrouillage

Pour chaque personne qui ouvre une base de données partagée, le moteur de base de données Access écrit une entrée dans le fichier « .laccdb » ou « .ldb » de la base de données. La taille de chaque entrée est de 64 octets. Les 32 premiers octets contiennent le nom de l’ordinateur (par exemple, JeanDupont). Les 32 octets suivants contiennent le nom de sécurité (par exemple, Admin). Le moteur de base de données Access prend en charge un maximum de 255 utilisateurs simultanés. Par conséquent, la taille du fichier de verrouillage n’est jamais supérieure à 16 kilo-octets.

Remarque

Bien qu’une solution de serveur de fichiers puisse prendre en charge jusqu’à 255 utilisateurs simultanés, si les utilisateurs de votre solution ajoutent et mettent à jour fréquemment des données, il est recommandé qu’une solution de serveur de fichiers Access ne prenne pas en charge plus de 25 à 50 utilisateurs. Pour plus d’informations, consultez l’article Chapter 1: Understanding Microsoft Access 2000 Client/Server Development.

Quand un utilisateur ferme une base de données partagée, l’entrée de l’utilisateur n’est pas supprimée du fichier de verrouillage. Toutefois, l’entrée de l’utilisateur peut être remplacée quand un autre utilisateur ouvre la base de données. Il est dès lors impossible d’utiliser le fichier de verrouillage seul pour déterminer l’utilisateur actuel de la base de données.

Utilisation du fichier de verrouillage

Le moteur de base de données Access utilise les informations du fichier de verrouillage pour empêcher les utilisateurs d’écrire des données dans des pages ou des enregistrements verrouillés par d’autres utilisateurs, ainsi que pour déterminer les utilisateurs qui ont d’autres pages ou enregistrements verrouillés. Si le moteur de base de données Access détecte un conflit de verrouillage avec un autre utilisateur, il lit le fichier de verrouillage pour obtenir le nom d’ordinateur et de sécurité de l’utilisateur dont le fichier ou l’enregistrement est verrouillé.

Dans la plupart des situations de conflit de verrouillage, un message générique « Conflit d’écriture » s’affiche pour vous permettre de sauvegarder l’enregistrement, de le copier dans le Presse-papiers ou d’abandonner les modifications apportées. Toutefois, dans certains cas, le message d’erreur suivant s’affiche :

Impossible de verrouiller la table <nom de la table> ; actuellement utilisée par l’utilisateur <nom de sécurité> sur le l’ordinateur <nom de l’ordinateur>.

Remarque

L’état des informations dans le fichier de verrouillage n’a aucune incidence sur l’état de la base de données. Si un fichier de verrouillage est endommagé, tout le contenu de la base de données devrait encore fonctionner correctement. Toutefois, du texte brouillé peut remplacer les noms d’utilisateur dans les messages de conflit de verrouillage.

Avec Microsoft Visual Basic pour Applications, vous pouvez obtenir la liste des utilisateurs connectés à une base de données spécifique. Pour plus d’informations sur cette procédure et pour obtenir un exemple de code, consultez l’article Comment déterminer qui est connecté à une base de données à l’aide de Microsoft Jet UserRoster dans Access.