Inleiding tot het vergrendelen van bestanden (laccdb en ldb) in Access

Inleiding

Het bestand '.laccdb' of '.ldb' speelt een belangrijke rol in het schema voor meerdere gebruikers van de Microsoft Access-database-engine. Het bestand '.laccdb' of '.ldb' wordt gebruikt om te bepalen welke records zijn vergrendeld in een gedeelde database en door wie. Het '.laccdb'-bestand wordt gebruikt met .accdb-databases en het '.ldb'-bestand wordt gebruikt met '.mdb'-databases. Zowel de bestanden '.laccdb' als '.ldb' worden vaak vergrendelingsbestanden genoemd.

Automatisch vergrendelingsbestand maken en verwijderen

Voor elke database die wordt geopend voor gedeeld gebruik, wordt een bestand '.laccdb' of '.ldb' gemaakt om computer- en beveiligingsnamen op te slaan en vergrendelingen voor uitgebreide bereiken in bytes te plaatsen. Het vergrendelingsbestand heeft altijd dezelfde naam als de geopende database en bevindt zich in dezelfde map als de geopende database. Als u bijvoorbeeld (voor gedeeld gebruik) de voorbeelddatabase Northwind.accdb opent in C:\users\<username>\documents\, wordt automatisch een bestand met de naam Northwind.laccdb gemaakt in dezelfde map met documenten.

Wanneer de laatste gebruiker een gedeelde database sluit, wordt het vergrendelingsbestand verwijderd. De enige uitzonderingen zijn wanneer een gebruiker geen verwijderingsrechten heeft of wanneer de database als beschadigd is gemarkeerd. Vervolgens wordt het vergrendelingsbestand niet verwijderd omdat het informatie bevat over wie de database gebruikte op het moment dat de database als beschadigd werd gemarkeerd.

Vereiste bevoegdheden voor de map

Als u een database wilt delen, moet het databasebestand zich bevinden in een map waarin gebruikers bevoegdheden hebben voor lezen, schrijven, maken en verwijderen. Zelfs als u wilt dat gebruikers verschillende bestandsbevoegdheden hebben (bijvoorbeeld sommige alleen-lezen en sommige lezen-schrijven), moeten alle gebruikers die een database delen machtigingen voor lezen, schrijven en maken hebben voor de map. U kunt echter alleen-lezen machtigingen toewijzen aan het .accdb- of .mdb-bestand voor individuele gebruikers, terwijl u nog steeds volledige machtigingen voor de map toestaat.

Opmerking

Als een gebruiker een database opent met exclusieve toegang (door op de pijl rechts van de knop Openen te klikken en vervolgens op Exclusief openen te klikken), wordt recordvergrendeling niet gebruikt. Daarom probeert Microsoft Access geen vergrendelingsbestand te openen of te maken. Als de database altijd wordt geopend voor exclusief gebruik, hoeft een gebruiker alleen lees- en schrijfbevoegdheden te hebben voor de map.

De inhoud van het vergrendelingsbestand

Voor elke persoon die een gedeelde database opent, schrijft de Access-database-engine een item in het '.laccdb'- of '.ldb'-bestand van de database. De grootte van elke vermelding is 64 bytes. De eerste 32 bytes bevatten de computernaam (zoals JohnDoe). De tweede 32 bytes bevatten de beveiligingsnaam (zoals Beheerder). Het maximum aantal gelijktijdige gebruikers dat de Access-database-engine ondersteunt, is 255. Daarom is de bestandsgrootte van het vergrendelingsbestand nooit groter dan 16 kilobytes.

Opmerking

Hoewel een oplossing voor een bestandsserver maximaal 255 gelijktijdige gebruikers kan ondersteunen, is het een goed idee om een oplossing voor een Access-bestandsserver te gebruiken die niet meer dan 25 tot 50 gebruikers ondersteunt als de gebruikers van uw oplossing vaak gegevens toevoegen en bijwerken. Raadpleeg Hoofdstuk 1: Inzicht in Microsoft Access 2000 Client/Server Development voor meer informatie.

Wanneer een gebruiker een gedeelde database sluit, wordt de invoer van de gebruiker niet verwijderd uit het vergrendelingsbestand. De invoer van de gebruiker kan echter worden overschreven wanneer een andere gebruiker de database opent. Dit betekent dat u niet alleen het vergrendelingsbestand kunt gebruiken om te bepalen wie de database momenteel gebruikt.

Het gebruik van het vergrendelingsbestand

De Access-database-engine gebruikt de informatie van het vergrendelingsbestand om te voorkomen dat gebruikers gegevens schrijven naar pagina's of records die andere gebruikers hebben vergrendeld en om te bepalen wie andere pagina's of records heeft vergrendeld. Als de Access-database-engine een vergrendelingsconflict met een andere gebruiker detecteert, wordt het vergrendelingsbestand gelezen om de computer- en beveiligingsnaam te krijgen van de gebruiker die het bestand of de record heeft vergrendeld.

In de meeste situaties met vergrendelingsconflicten ontvangt u een algemeen bericht 'Conflict met schrijven' waarmee u de record kunt opslaan, naar het klembord kunt kopiƫren of de aangebrachte wijzigingen kunt verwijderen. In sommige gevallen wordt echter het volgende foutbericht weergegeven:

Kan tabeltabelnaam niet vergrendelen<; wordt momenteel gebruikt door de beveiligingsnaam> van de gebruiker <op de computernaam<>.>

Opmerking

De status van de gegevens in het vergrendelingsbestand heeft geen invloed op de status van de database. Als een vergrendelingsbestand beschadigd raakt, moet alles in de database nog steeds correct werken. Het is echter mogelijk dat u gecodeerde tekst ziet in plaats van gebruikersnamen in berichten over vergrendelingsconflicten.

Met Microsoft Visual Basic for Applications kunt u een lijst met gebruikers uitvoeren die zijn aangemeld bij een specifieke database. Raadpleeg Bepalen wie is aangemeld bij een database met behulp van Microsoft Jet UserRoster in Access voor meer informatie over hoe u dit doet en voorbeeldcode.