Problemen met een beschadigde database van Access 2002 of hoger oplossen en database repareren

De ondersteuning voor Office 2003 is beëindigd

De ondersteuning voor Office 2003 is door Microsoft beëindigd op 8 april. Deze wijziging heeft gevolgen voor software-updates en beveiligingsopties. Meer informatie over wat voor gevolgen dit voor u heeft en hoe u beveiligd blijft.

Nieuwe gebruikers: voor deze procedure moet u vertrouwd zijn met de gebruikersinterface op computers die bedoeld zijn voor één gebruiker.

Dit artikel is alleen van toepassing op Microsoft Access-databases (.mdb).

Klik op de volgende koppeling voor een Microsoft Access 97-versie van dit artikel: 279334.
Klik op de volgende koppeling voor een Microsoft Access 2000-versie van dit artikel: 209137.
Samenvatting
Er kan van alles gebeuren, zowel binnen als buiten Access, waardoor een databasebestand beschadigd kan raken. De symptomen van een beschadigde database kunnen variëren: in bepaalde records kan de melding #Verwijderd verschijnen, u kunt een van de objecten in de database niet meer openen of u kunt het hele databasebestand niet meer openen in Access. Het hulpprogramma Comprimeren en herstellen in Microsoft Access is handig voor het optimaliseren of repareren van databasebestanden van Microsoft Access. In dit artikel wordt dit hulpprogramma van Access beschreven en worden alternatieven geboden voor het herstellen van beschadigde databases. Dit artikel bevat ook informatie over mogelijke oorzaken van beschadigde databases.

Opmerking Microsoft Jet, de database-engine die in Microsoft Access wordt gebruikt, is een databasesysteem op basis van bestandsindeling. Wanneer Microsoft Jet wordt gebruikt in een omgeving met meerdere gebruikers, worden er meerdere clientprocessen gebruikt voor het lezen, schrijven en vergrendelen van bestanden in een gedeelde database. Omdat meerdere clientprocessen in dezelfde database lezen en schrijven en omdat Jet geen transactielogboek gebruikt (zoals wel het geval is bij meer geavanceerde databasesystemen, bijvoorbeeld SQL Server), is het niet mogelijk beschadiging van de database volledig uit te sluiten. Als u een databasesysteem nodig hebt dat 24 uur per dag, zeven dagen per week beschikbaar moet zijn in een omgeving met meerdere gebruikers, raadt Microsoft u aan een echt client/server-databasesysteem te gebruiken dat duurzame transacties ondersteunt, zoals Microsoft SQL Server.
Meer informatie
De procedures die in dit artikel worden beschreven, zijn meestal succesvol bij het herstellen van beschadigde databasebestanden. Ter beveiliging van uw gegevens wordt echter aangeraden zo vaak mogelijk een reservekopie van de databasebestanden te maken.

Beschrijving van het hulpprogramma Comprimeren en herstellen

Een database comprimeren

Wanneer u een database comprimeert, wordt ongebruikte ruimte in de database, die is ontstaan door het verwijderen van objecten en records, vrijgemaakt. Hierbij wordt een nieuwe doeldatabase gemaakt en wordt elk object uit de oude database naar de nieuwe database gekopieerd. Als u ervoor kiest om de database te comprimeren onder de oorspronkelijke databasenaam in plaats van een nieuwe naam, maakt het hulpprogramma een tijdelijke database. Vervolgens worden alle objecten uit de oorspronkelijke database naar de tijdelijke database geëxporteerd, wordt de oorspronkelijke database verwijderd en krijgt de tijdelijke database de naam van de oorspronkelijke database.

Tijdens het comprimeren worden de volgende acties uitgevoerd:
  • De pagina's van een tabel worden zodanig opnieuw gerangschikt dat deze zich in aangrenzende databasepagina's bevinden. Hierdoor worden de prestaties verbeterd omdat de tabel niet meer in fragmenten door de database verspreid is.
  • Lege ruimte als gevolg van het verwijderen van objecten en records wordt vrijgemaakt. Wanneer objecten of records uit de database worden verwijderd, komt de ruimte die ze in beslag namen beschikbaar voor toevoegingen aan de database. De omvang van de database wordt echter alleen kleiner als de database wordt gecomprimeerd. Databases waarin vaak objecten en records worden toegevoegd, verwijderd en bijgewerkt, moeten regelmatig worden gecomprimeerd.
  • Oplopende AutoNummering-velden worden opnieuw ingesteld zodat de volgende toegewezen waarde één waarde hoger is dan de hoogste waarde in de resterende records. Als bijvoorbeeld alle records uit de database zijn verwijderd en de database is gecomprimeerd, is de waarde in het AutoNummering-veld gelijk aan 1 wanneer de volgende record wordt toegevoegd. Als de hoogste resterende AutoNummering-waarde in de database 50 is, wordt deze waarde na het comprimeren verhoogd naar 51 wanneer de volgende record wordt toegevoegd. Dit is zelfs het geval als records met waarden hoger dan 50 werden toegevoegd, maar weer werden verwijderd voordat het comprimeren werd uitgevoerd.
  • De tabelstatistieken die zijn gebruikt tijdens de query-optimalisatie, worden opnieuw gegenereerd. Deze statistieken kunnen in de loop van de tijd verouderd raken. Dit gebeurt gewoonlijk als transacties zijn hersteld of als de database niet juist wordt afgesloten vanwege een stroomonderbreking of omdat een programma dat gebruikmaakt van Microsoft Jet, niet volledig is afgesloten voordat de computer werd uitgeschakeld.
  • Alle query's worden gemarkeerd zodat deze opnieuw worden gecompileerd wanneer de query de volgende keer wordt uitgevoerd. Dit is belangrijk omdat databasestatistieken kunnen veranderen en een eerder gecompileerde query een onnauwkeurige queryplanning kan hebben.
Een database herstellen

Het reparatieproces is uitsluitend gericht op het herstellen van tabellen, query's en indexen in de database en niet op het herstellen van beschadigde formulieren, rapporten, macro's of modules.

Wat u moet controleren voordat u het hulpprogramma Comprimeren en herstellen gebruikt

Voordat u het hulpprogramma Comprimeren en herstellen gebruikt voor een database, moet u het volgende doen:
  • Controleer of de vaste schijf voldoende vrije ruimte bevat voor zowel de oorspronkelijke als de gecomprimeerde versie van de Access-database. Dit betekent dat er op de schijf ten minste twee maal zoveel ruimte vrij moet zijn als de Access-database groot is. Als u ruimte moet vrijmaken, verwijdert u overbodige bestanden van het station of verplaatst u zo mogelijk de Access-database naar een station dat meer ruimte bevat.
  • Controleer of u zowel de machtigingen Openen/uitvoeren als Exclusief openen hebt voor de Access-database. Als u eigenaar bent van de database, moet u deze machtigingen instellen. Als u geen eigenaar van de database bent, neemt u contact op met de eigenaar over het instellen van deze machtigingen.
  • Controleer of er geen gebruikers zijn die de Access-database hebben geopend.
  • Zorg ervoor dat de Access-database niet op een alleen-lezen netwerkshare staat en dat het bestandskenmerk Alleen-lezen niet is ingesteld.

Stappen die u kunt uitvoeren om een beschadigde database te repareren

De volgende stappen geven een overzicht van de algemene methode voor het herstellen van een beschadigde database:
  1. Maak een reservekopie van het beschadigde databasebestand (.mdb).
  2. Verwijder het ldb-bestand als dit aanwezig is. U moet het overeenkomstige mdb-bestand sluiten voordat u het ldb-bestand verwijdert.

    Het ldb-bestand wordt gebruikt om vast te stellen welke records in een gedeelde database vergrendeld zijn en door wie dat is gebeurd. Als een database wordt geopend voor gezamenlijk gebruik, wordt het ldb-bestand gemaakt onder dezelfde naam als de overeenkomstige database (.mdb). Als u bijvoorbeeld de voorbeelddatabase Noordenwind.mdb in de map C:\Msoffice\Access opent voor gezamenlijk gebruik, wordt in dezelfde map automatisch een bestand met de naam Noordenwind.ldb gemaakt. Het ldb-bestand wordt automatisch verwijderd nadat de laatste gebruiker de database heeft gesloten. Hierop zijn echter twee uitzonderingen: het bestand wordt niet verwijderd als de database beschadigd is of als de laatste gebruiker geen machtiging voor verwijderen heeft voor de map waarin het mdb-bestand zich bevindt. Het ldb-bestand bevat een lijst met gebruikers die de database op dat moment geopend hebben.
  3. Start het hulpprogramma Comprimeren en herstellen Hiertoe gaat u als volgt te werk:
    1. Sluit de database als deze geopend is.
    2. Wijs in het menu Extra de opdracht Databasehulpprogramma's aan en klik op Database comprimeren en herstellen.
    3. Selecteer in het dialoogvenster Te comprimeren database opgeven het bestand dat u wilt comprimeren en klik op Comprimeren.
    4. Voer in het dialoogvenster Database comprimeren als een nieuwe bestandsnaam in en klik op Opslaan.

      Als het comprimeren en herstellen niet is gelukt, wordt dit in een bericht gemeld. Dit betekent dat de beschadiging zo ernstig is dat de database niet kan worden hersteld.
  4. Als u de beschadigde database niet kunt herstellen met de voorgaande procedure, kunt u een nieuwe database maken en de objecten een voor een vanuit de oude database naar de nieuwe database importeren. Vervolgens moet u de relaties opnieuw aanbrengen. Via deze techniek kunt u problemen met beschadigde systeemtabellen in de database oplossen.

    Opmerking U kunt geen Data Access-pagina's importeren met de wizard Importeren. In plaats daarvan moet u een bestaande Data Access-pagina openen in de nieuwe database. Hiertoe gaat u als volgt te werk:
    1. Klik in het databasevenster op Pagina's onder Objecten.
    2. Klik op Nieuw.
    3. Klik in het dialoogvenster Nieuwe Data Access-pagina op Bestaande webpagina en klik op OK.
    4. Ga in het venster Zoeken naar webpagina naar de locatie van de Data Access-pagina.
  5. Als de beschadiging een tabel betreft en deze kon niet worden hersteld met behulp van de voorgaande stappen, gaat u als volgt te werk:
    1. Exporteer de tabel vanuit Microsoft Access naar een ASCII-bestand (tekstbestand met scheidingstekens). Zoek voor meer informatie naar het onderwerp 'Gegevens of databaseobjecten exporteren' in de Help-index van Microsoft Access.
    2. Verwijder alle relaties die aan deze tabel gekoppeld zijn en verwijder vervolgens de tabel uit de database.
    3. Comprimeer de database.
    4. Maak de tabel opnieuw en herstel de relaties van en naar de tabel.
    5. Open het ASCII-bestand in een tekstverwerker, controleer of beschadigde of vreemde gegevens aanwezig zijn en verwijder de betreffende records. Sla het bestand op in een ASCII-tekstindeling.
    6. Importeer het ASCII-bestand in de opnieuw gemaakte tabel. Voor meer informatie over dit onderwerp zoekt u in de Help-index van Microsoft Access naar het woord 'scheidingsteken' en bekijkt u het onderwerp 'Gegevens en objecten importeren of koppelen'.
    7. Voer de records in die u eerder moest verwijderen.
  6. Als de beschadiging een formulier of een rapport betreft, kan het formulier of rapport zelf beschadigd zijn of kunnen een of meer besturingselementen in het formulier of rapport beschadigd zijn. U kunt het formulier of rapport verwijderen en opnieuw importeren met behulp van de reservekopie van de database. U kunt ook een van de volgende methoden gebruiken:
    • Als het formulier of rapport zelf beschadigd is, maakt u een nieuw formulier of rapport en kopieert u de besturingselementen uit het oorspronkelijke formulier of rapport.
    • Als een besturingselement in het formulier of rapport beschadigd is, maakt u een nieuw formulier of rapport en maakt u de besturingselementen opnieuw in het nieuwe formulier of rapport. Het is raadzaam alle besturingselementen opnieuw te maken, omdat het niet mogelijk is vast te stellen welk besturingselement beschadigd is.
  7. Als de beschadiging een macro of module betreft, kan de macro of module zelf of de inhoud van de macro of module beschadigd zijn. U kunt de macro of module verwijderen en opnieuw importeren uit de reservekopie van de database. U kunt ook een van de volgende methoden gebruiken:
    • Als de macro of module zelf beschadigd is, maakt u een nieuwe macro of module, waarna u de inhoud van de oorspronkelijke macro of module kopieert.
    • De beschadiging kan betrekking hebben op niet-ASCII-tekens die in de module zijn ingesloten. Sla de module op als tekstbestand, verwijder beschadigde of vreemde gegevens en laad het bestand in een nieuwe module.
    • Als de inhoud van de macro of module beschadigd is, maakt u een nieuwe macro of module en maakt u de inhoud van de oorspronkelijke macro of module opnieuw.
Als u de database via deze stappen niet kunt herstellen, is deze waarschijnlijk zodanig beschadigd dat herstellen niet mogelijk is. In dat geval moet u de laatste reservekopie van de database herstellen of de database opnieuw maken.

Als laatste alternatief bieden sommige consultants een herstelservice voor Microsoft Access-databases. Dit is een zeer gespecialiseerde service. De meest efficiënte manier om een dergelijke consultant op te sporen is door een bericht te publiceren in de Microsoft Access-nieuwsgroep 'Third Party and User Groups' op het volgende internetadres:
microsoft.public.access.3rdpartyusrgrp
Raadpleeg het volgende Microsoft Knowledge Base-artikel voor meer informatie over Microsoft Access-nieuwsgroepen op internet: Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
287756Veld van het type AutoNummering wordt niet opnieuw ingesteld nadat u een database hebt gecomprimeerd

Waarom MDB-bestanden beschadigd kunnen raken

Er zijn drie belangrijke oorzaken waardoor een mdb-bestand beschadigd kan raken:
  • Een onderbroken schrijfbewerking
  • Defecte netwerkhardware
  • Het MDB-bestand openen en opslaan in een ander programma

Een onderbroken schrijfbewerking

U moet Access altijd op de juiste manier afsluiten met de opdracht Afsluiten of Sluiten in het menu Bestand. Als de database geopend is en bezig is met het schrijven van gegevens op het moment dat Access op abnormale wijze wordt afgesloten, kan de Jet Database Engine de database markeren als onbetrouwbaar/beschadigd. Dit kan gebeuren als u de computer handmatig uitschakelt zonder Windows eerst af te sluiten of als de stroom uitvalt. Er zijn ook andere situaties waarin Access niet wordt afgesloten, maar er toch problemen optreden terwijl Jet gegevens naar de schijf schrijft terwijl de database is geopend. Dit kan bijvoorbeeld gebeuren in geval van gegevensconflicten in een netwerk of bij slecht functioneren van een schijfstation. Als een van deze onderbrekingen optreedt, kan Jet de database markeren als mogelijk beschadigd.

Wanneer Jet een schrijfbewerking start, wordt een markering ingesteld. Deze markering wordt weer verwijderd als de bewerking is voltooid. Als een schrijfbewerking wordt onderbroken, blijft de markering ingesteld. Als u de database opnieuw probeert te openen, neemt Jet waar dat de markering is ingesteld en wordt gerapporteerd dat de database beschadigd is. In de meeste gevallen zijn de gegevens in de database niet daadwerkelijk beschadigd, maar wordt Jet door de markering gewaarschuwd dat een beschadiging kan zijn opgetreden. In dergelijke gevallen kan het probleem dikwijls worden opgelost door de database te comprimeren en/of te herstellen. Er zijn gelukkig manieren om vast te stellen welke gebruiker en welk werkstation verantwoordelijk waren voor de markering van het bestand. Met behulp van Microsoft Visual Basic for Applications in Access kunt u een lijst weergeven met gebruikers die bij een bepaalde database zijn aangemeld.
208449Microsoft Access-nieuwsgroepen op internet
Meer informatie hierover vindt u in de sectie 'Vaststellen welke gebruikers/werkstations ervoor zorgen dat het bestand wordt gemarkeerd als mogelijk beschadigd' verderop in dit artikel.

Defecte netwerkhardware

Soms kan een database beschadigd raken zonder dat de Jet database-engine daarbij is betrokken. Een bestand kan bijvoorbeeld beschadigd raken door defecte netwerkhardware. De oorzaak kan liggen in een of meer koppelingen in de hardwareketen tussen de computer waarop de database is geïnstalleerd en de computer waarop de database is geopend. De lijst met mogelijk defecte hardware omvat onder meer netwerkinterfacekaarten, netwerkbekabeling, routers en hubs.

Een symptoom van door hardware veroorzaakte beschadiging is dat mdb-bestanden niet kunnen worden hersteld door het gebruik van het hulpprogramma Comprimeren en herstellen of door Jetcomp. Beschadiging door hardware blijft dikwijls optreden totdat de betreffende hardware wordt gerepareerd of vervangen.

Het MDB-bestand openen en opslaan in een ander programma

Het is niet mogelijk om een mdb-bestand te herstellen dat in een ander programma werd geopend en opgeslagen. U zou bijvoorbeeld een mdb-bestand kunnen openen en opslaan in Microsoft Word, maar als u dat zou doen, kan het mdb-bestand nooit worden hersteld, behalve met een reservekopie. Als u een mdb-bestand per ongeluk in een andere toepassing opent, moet u het daarin zeker niet opslaan. Het heeft geen enkele zin een mdb-bestand in een andere toepassing te openen, omdat u dan alleen willekeurige reeksen met tekens ziet.

Methoden om vast te stellen welke gebruikers en/of werkstations ervoor zorgen dat het bestand wordt gemarkeerd als mogelijk beschadigd

Als u de oorzaak van de databasebeschadiging probeert te achterhalen, kan het belangrijk zijn te weten wie er bij de database is aangemeld. Met behulp van Microsoft Visual Basic for Applications in Access 2002 of Access 2003 kunt u een lijst weergeven met gebruikers die bij een bepaalde database zijn aangemeld.
Klik voor meer informatie over deze procedure op het volgende artikelnummer in de Microsoft Knowledge Base:
285822Vaststellen wie is aangemeld bij een database met behulp van Microsoft Jet UserRoster in Access 2002

Stappen om beschadiging te voorkomen

U kunt beschadiging van een database als volgt voorkomen:
  • Voorkom stroomonderbrekingen tijdens het schrijven naar een database. Door stroomonderbrekingen tijdens het schrijven naar een database kan de database de status 'mogelijk beschadigd' krijgen.
  • Voorkom het verbreken van netwerkverbindingen.
  • Voorkom ongewone beëindiging van Microsoft Jet-verbindingen, zoals stroomonderbrekingen, handmatig afsluiten, afsluiten via Taakbeheer, enzovoort.
  • Sluit tijdens het programmeren alle geopende DAO- en ADO-objecten, Voorbeelden hiervan zijn de objecten Recordset, QueryDef, TableDef en Database.
  • Fatale systeemfouten veroorzaken bijna altijd een ongewone beëindiging. Als uw database gevoelig is voor fatale fouten, moet u de fouten herstellen voordat de database te zeer beschadigd raakt om te kunnen worden geopend of hersteld.Voor meer informatie over de manier waarop u dat kunt doen en voorbeeldcode die u kunt gebruiken, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
    285822Vaststellen wie is aangemeld bij een database met behulp van Microsoft Jet UserRoster in Access 2002
    Als u meer informatie wilt over fatale systeemfouten, klikt u op de volgende artikelnummers in de Microsoft Knowledge Base:
    294301Access 2002: Fatale systeemfouten oplossen in Access 2002 onder Microsoft Windows 2000
  • Comprimeer de database regelmatig.
  • Voer IPX niet uit op een Microsoft Windows NT-server als er zich in het netwerk Jet-databases bevinden en Microsoft Windows 95 met IPX/SPX de client is. Voer in plaats daarvan TCP-IP uit op de Windows NT-server en een tweeledige protocolstack van IPX en TCP-IP op de Win95-client. (Windows NT naar Windows NT met IPX/SPX zal het probleem niet veroorzaken, en Novell naar een willekeurige andere client evenmin.)
  • Vermijd een groot aantal open- en sluit-instructies in een lus (meer dan 40.000 achtereenvolgende open- en sluit-instructies kunnen beschadigingen veroorzaken).

Speciale opmerking over geconverteerde databases

Als er in versies van Access ouder dan Access 2002 problemen waren tijdens het converteren van een database naar de huidige versie, was het niet eenvoudig om te bepalen welke objecten mogelijk beschadigd waren geraakt.

Als er in Microsoft Access 2002 of hoger fouten optreden tijdens het converteren van een Access-bestand, kunt u een overzicht van deze fouten bekijken door de tabel Conversiefouten te openen in het nieuwe Access-bestand. De tabel Conversiefouten bevat de volgende kolommen:

Objecttype. Het type van het databaseobject waarin een fout is aangetroffen of de tekst 'Database' als er een fout is opgetreden die niet specifiek is voor een bepaald object.

Objectnaam. De naam van het object waarin een fout is aangetroffen. Als er echter in Access een compilatiefout optreedt tijdens de conversie, wordt de naam van de module die de fout bevat, niet weergegeven.

Foutbeschrijving: Druk zo nodig op SHIFT+F2 om de volledige beschrijving van de fout weer te geven.
Referenties
Als u meer informatie wilt over het herstellen van databases, klikt u op Microsoft Access Help in het menu Help, typt u herstellen in de Office-assistent of de Antwoordwizard en klikt u vervolgens op Zoeken om het bijbehorende onderwerp weer te geven. Voor meer informatie over het oplossen van problemen met databases in eerdere versies van Access klikt u op de volgende artikelnummers in de Microsoft Knowledge Base:
209137Problemen met een beschadigde Jet 4.0-database oplossen en de database herstellen
279334Een beschadigde Jet 3.5-database herstellen
109953Problemen met een beschadigde Jet 3.0-database of database van een eerdere versie oplossen en de database herstellen
284152Fatale systeemfouten oplossen in Access 2002 onder Windows ME
OfficeKBHowTo corrupt corruption inf ACC2002 ACC2003 ReviewDocId
Tulajdonságok

Cikkazonosító: 283849 - Utolsó ellenőrzés: 01/24/2006 16:07:10 - Verziószám: 6.1

Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbcorrupt kbtshoot kbhowto KB283849
Visszajelzés