Feilsøke og reparere en skadet database for Access 2002 eller senere

Artikkeloversettelser Artikkeloversettelser
Artikkel-ID: 283849 - Vis produkter som denne artikkelen gjelder for.
Nybegynner: Krever kunnskap om brukergrensesnittet på enbrukermaskiner.

Denne artikkelen gjelder bare for Microsoft Access-databaser (MDB).

Hvis du vil ha en Microsoft Access 97-versjon av denne artikkelen, kan du se279334 (denne artikkelen kan være på engelsk).
Hvis du vil ha en Microsoft Access 2000-versjon av denne artikkelen, kan du se209137 (denne artikkelen kan være på engelsk).
Vis alt | Skjul alt

På denne siden

Sammendrag

Det er flere ting som kan skje, både innenfor og utenfor Access, som kan føre til at databasefilen blir skadet. Kjennetegnene på en skadet database kan variere fra at #Slettet vises i bestemte oppføringer, til at et av objektene i databasen ikke kan åpnes, eller til at det ikke er mulig å åpne databasefilen i Access. Komprimerings- og reparasjonsverktøyet i Microsoft Access er et nyttig verktøy for å optimalisere eller prøve å reparere databasefiler for Microsoft Access. Denne artikkelen beskriver dette Access-verktøyet, og gir flere alternativer for hvordan skadede databaser kan repareres. Denne artikkelen inneholder også informasjon om årsaker til at det oppstår skader i databaser.

Obs!  Microsoft Jet, databasemotoren som brukes i Microsoft Access, er et databasesystem som er basert på fildeling. Når Microsoft Jet brukes i et miljø med flere brukere, utføre flere klientprosesser operasjoner for å lese, skrive til og låse filer i en delt database. Fordi flere klientprosesser leser og skriver til den samme databasen, og fordi Jet ikke bruker en transaksjonslogg (slik mer avanserte databasesystemer, for eksempel SQL Server, gjør), er det ikke mulig å forhindre enhver form for skade i databasen på en pålitelig måte. Hvis du trenger et databasesystem som kjører kontinuerlig i et miljø med flere brukere, anbefaler Microsoft at du bruker et ekte klient/server-databasesystem som støtter varige transaksjoner, for eksempel Microsoft SQL Server.

Mer informasjon

Selv om fremgangsmåten som beskrives i denne artikkelen, vanligvis fører til at skadede databasefiler kan gjenopprettes, anbefaler Microsoft at du tar sikkerhetskopi av databasefilen så ofte som mulig.

Beskrivelse av komprimerings- og reparasjonsverktøyet

Komprimering av en database

Når du komprimerer en database, frigjør komprimeringsprosessen ubrukt plass som har oppstått på grunn av slettinger av objekter og oppføringer. Prosessen går ut på å opprette en ny måldatabase og kopiere hvert objekt i den gamle databasen til den nye databasen. Hvis du velger å komprimere databasen til det opprinnelige databasenavnet i stedet for til en ny database, oppretter komprimeringsprosessen en midlertidig database, eksporterer alle objektene fra den opprinnelige databasen til den midlertidige databasen, fjerner den opprinnelige databasen og gir den midlertidige databasen navnet til den opprinnelige databasen.

Komprimeringsprosessen omfatter følgende handlinger:
  • Sidene ordnes i en tabell slik at de blir liggende i tilstøtende databasesider. Dette forbedrer ytelsen fordi tabellen ikke lenger er fragmentert på tvers av databasen.
  • Ubrukt plass som har oppstått på grunn av sletting av objekter og oppføringer, blir frigitt. Når objekter eller oppføringer slettes fra databasen, merkes plassen de opptok, som tilgjengelig for nye elementer i databasen. Størrelsen på databasen krymper imidlertid ikke hvis ikke du komprimerer databasen. Databaser hvor objekter og oppføringer ofte legges til, slettes og oppdateres, bør komprimeres ofte.
  • Stigende Autonummer-felt tilbakestilles, slik at den neste verdien som tildeles, blir en verdi som er én høyere enn den høyeste verdien i de gjenværende oppføringene. Hvis for eksempel alle oppføringene i databasen er slettet, vil verdien i Autonummer-feltet være 1 når den neste oppføringen legges til, etter at databasen er komprimert. Hvis den høyeste gjenværende Autonummer-verdien i databasen er 50, vil den neste verdien i Autonummer-feltet være 51 når den neste oppføringen legges til. Legg merke til at dette gjelder selv om oppføringer som inneholder verdier høyere enn 50, ble lagt til tidligere, men ble slettet før komprimeringen.
  • Tabellstatistikkene som brukes i spørringsoptimaliseringsprosessen, genereres på nytt. Disse statistikkene kan blir utdaterte over tid. Dette skjer vanligvis hvis transaksjoner tilbakerulles, eller hvis databasen ikke lukkes på riktig måte på grunn av strømtap eller fordi datamaskinen slås av før et program som bruker Microsoft Jet, er blitt helt avsluttet.
  • Alle spørringer flagges slik at de rekompileres neste gang spørringen kjøres. Dette er viktig fordi databasestatistikken kan bli endre, og fordi en tidligere kompilert spørring kan ha en unøyaktig spørringsplan.
Reparere en database

Reparasjonsprosessen prøver bare å reparere tabellene, spørringene og indeksene i databasen. Den prøver ikke å reparere skadede skjemaer, rapporter, makroer eller moduler.

Hva du bør kontrollere før du kjører komprimerings- og reparasjonsverktøyet

Før du kjører komprimerings- og reparasjonsverktøyet i en database, bør du kontrollere følgende:
  • Kontroller at du har nok ledig lagringsplass på harddisken både for den opprinnelige og den komprimerte versjonen av Access-databasen. Det betyr at du må ha nok ledig lagringsplass til minst det dobbelte av størrelsen på Access-databasen på stasjonen. Hvis du må frigjøre plass, kan du slette filer du ikke trenger, fra stasjonen, eller flytte Access-databasen til en stasjon med mer ledig plass.
  • Kontroller at du har tillatelse til både å åpne/kjøre Access-databasen og til å åpne den eksklusivt. Hvis du eier databasen, må du definere disse tillatelsene. Hvis du ikke eier databasen, må du kontakte eieren for å finne ut om du kan kan få disse tillatelsene.
  • Kontroller at ingen brukere har Access-databasen åpen.
  • Kontroller at Access-databasen ikke er plassert på en skrivebeskyttet nettverksressurs, eller at filattributtet er satt til skrivebeskyttet.

Fremgangsmåte for å forsøke å reparere en skadet database

Følgende fremgangsmåte beskriver en generell metode for hvordan du kan prøve å reparere en skadet database:
  1. Lag en kopi av den skadede databasefilen (*.mdb) slik at du har en sikkerhetskopi.
  2. Slett *.ldb-filen hvis den finnes. Du må lukke den tilsvarende MDB-filen før du sletter LDB-filen.

    LDB-filen brukes for å bestemme hvilke poster som er låst i en delt database, og hvem som har låst dem. Hvis databasen er åpnet for delt bruk, opprettes *.ldb-filen med det samme navnet som den tilsvarende databasen (*.mdb-filen). Hvis du for eksempel åpner eksempeldatabasen Gastronor.mdb for delt bruk i mappen C:\Msoffice\Access, opprettes filen Gastronor.ldb automatisk i den samme mappen. LDB-filen slettes automatisk etter at den siste brukeren har gått ut av databasen, med to unntak: når den siste brukeren ikke har slettetillatelse for mappen som inneholder MDB-filen, eller når databasen er skadet. LDB-filen inneholder en liste over brukerne som har databasen åpen.
  3. Kjør komprimerings- og reparasjonsverktøyet. Gjør dette ved å bruke følgende fremgangsmåte:
    1. Hvis databasen er åpen, lukker du den.
    2. Velg DatabaseverktøyVerktøy-menyen, og klikk deretter Komprimer og reparer database.
    3. I dialogboksen Database som skal komprimeres velger du filen du vil komprimere, og klikker deretter Komprimer.
    4. I dialogboksen Komprimer database som angir du et nytt filnavn, og deretter klikker du Lagre.

      Hvis komprimeringen og reparasjonen ikke lykkes, får du en melding om det. Dette betyr at skaden er så alvorlig at den ikke kan rettes opp.
  4. Hvis du ikke lykkes i å gjenopprette den skadede databasen ved hjelp av fremgangsmåten ovenfor, kan du prøve å opprette en ny database og importere objektene, ett etter ett, fra den gamle databasen til den nye. Opprett deretter relasjonene på nytt. Denne teknikken løser problemer med skadede systemtabeller i databasen.

    Obs!  Du kan ikke importere datatilgangssider ved hjelp av importveiviseren. Åpne i stedet en eksisterende datatilgangsside i den nye databasen. Gjør dette ved å bruke følgende fremgangsmåte:
    1. Klikk Sider under Objekter i databasevinduet.
    2. Klikk Ny.
    3. I dialogboksen Ny datatilgangsside klikker du Eksisterende webside, og klikker deretter OK.
    4. I vinduet Finn webside går du til plasseringen til datatilgangssiden.
  5. Hvis skaden er i en tabell, og den ikke ble gjenopprettet ved å følge fremgangsmåten ovenfor, kan du prøve følgende:
    1. I Microsoft Access eksporterer du tabellen til en ASCII-fil (tekstfil med skilletegn). Hvis du vil ha mer informasjon, kan du lese emnet Eksportere data- eller databaseobjekter i hjelpen for Microsoft Access.
    2. Slett eventuelle relasjoner tilknyttet denne tabellen, og slett deretter tabellen fra databasen.
    3. Komprimer databasen.
    4. Opprett tabellen og eventuelle relasjoner på nytt.
    5. Se etter ugyldige eller merkelige data i ASCII-filen ved hjelp av et tekstbehandlingsprogram, og fjern disse postene. Lagre filen i ASCII-tekstfilformat.
    6. Importer ASCII-filen på nytt til den nyopprettede tabellen. Hvis du vil ha mer informasjon om dette emnet, kan du søke etter ordet "skilletegn" i stikkordregisteret i hjelpen for Microsoft Access, og deretter lese emnet Importere eller koble data og objekter.
    7. Legg inn eventuelle poster du måtte slette, på nytt.
  6. Hvis skaden er i et skjema eller en rapport, kan skaden enten være i selve skjemaet eller rapporten, eller i en eller flere kontroller i skjemaet eller rapporten. Du kan slette skjemaet eller rapporten og importere det/den fra sikkerhetskopien av databasen eller bruke ett av følgende alternativer:
    • Hvis skaden er i selve skjemaet eller rapporten, oppretter du et nytt skjema eller en ny rapport og kopierer deretter kontrollene fra det opprinnelige skjemaet eller den opprinnelige rapporten.
    • Hvis skaden er i en kontroll i skjemaet eller rapporten, oppretter du et nytt skjema eller en ny rapport og oppretter deretter kontrollene på nytt i det nye skjemaet eller den nye rapporten. Det beste er å opprette alle kontrollene på nytt, fordi det ikke er mulig å vite hvilke kontroller som er skadet.
  7. Hvis skaden er i en makro eller modul, kan skaden være i selve makroen eller modulen, eller i innholdet i makroen eller modulen. Du kan slette makroen eller modulen og importere den fra sikkerhetskopien av databasen, eller bruke ett av følgende alternativer:
    • Hvis skaden er i selve makroen eller modulen, oppretter du en ny makro eller modul, og kopierer deretter innholdet i den opprinnelige makroen eller modulen.
    • Skaden kan omfatte ikke-ASCII-tegn som er innebygd i modulen. Lagre modulen som en tekstfil, fjern eventuelle ugyldige eller merkelige data, og last deretter inn tekstfilen på nytt i en ny modul.
    • Hvis skaden er i innholdet i makroen eller modulen, må du opprette en ny makro eller modul og deretter opprette innholdet i den opprinnelige makroen eller modulen på nytt.
Hvis du ikke kan reparere databasen med denne fremgangsmåten, er databasen sannsynligvis så skadet at den ikke kan repareres. Hvis dette er tilfellet, bør du gjenopprette den siste sikkerhetskopien av databasen eller opprette databasen på nytt.

Som en siste mulighet kan det hende at enkelte konsulenter tilbyr en reparasjonstjeneste for Microsoft Access-databaser. Fordi dette er en såpass spesialisert tjeneste, er den mest effektive måten å finne en konsulent på å legge inn en melding i nyhetsgruppen Third Party and User Groups for Microsoft Access på Internett, som har følgende nyhetsgruppeadresse:
microsoft.public.access.3rdpartyusrgrp
Hvis du vil ha mer informasjon om nyhetsgruppen Third Party and User Groups for Microsoft Access på Internett, kan du se følgende artikkel i Microsoft Knowledge Base: Hvis du vil ha mer informasjon om dette, kan du se følgende artikkel i Microsoft Knowledge Base:
287756 Autonummer-feltet tilbakestilles ikke etter at du har komprimert en database (denne artikkelen kan være på engelsk)

Grunner til at MDB-filer blir skadet

Det er tre hovedgrunner til at en MDB-fil blir skadet:
  • Avbrutt skriveoperasjon
  • Feil i nettverksmaskinvare
  • Åpne og lagre MDB-filen i et annet program

Avbrutt skriveoperasjon

Du bør alltid avslutte Access på riktig måte ved å klikke Avslutt eller LukkFil-menyen. Hvis en database er åpen og skriver data når Access lukkes på en unormal måte, kan Jet-databasemotoren merke databasen som usikker/skadet. Dette kan skje hvis du slår av datamaskinen manuelt uten å avslutte Windows først, eller ved strømbrudd. Det kan også oppstå andre situasjoner hvor Access ikke avsluttes, men som likevel påvirker skrivingen av data fra Jet til disken mens databasen er åpen. Dette kan for eksempel skje når det oppstår datakollisjoner i et nettverk, eller når diskstasjoner ikke fungerer som de skal. Hvis noen av disse avbrytelsene oppstår, merker Jet databasen som muligens skadet.

Ved en skriveoperasjon angir Jet et flagg som stilles tilbake når operasjonen er fullført. Hvis en skriveoperasjon blir avbrutt, beholdes flaggstatusen. Når du forsøker å åpne databasen igjen, oppdager Jet at flagget er angitt, og rapporterer at databasen er skadet. I de fleste tilfeller er dataene i databasen faktisk ikke skadet, men flagget varsler Jet om at det kan ha oppstått skade. I slike tilfeller kan en komprimering og/eller reparasjon av databasen vanligvis gjenopprette databasen. Heldigvis finnes det metoder for å finne ut hvilken bruker og arbeidsstasjon som var ansvarlig for å merke filen som usikker. Med Microsoft Visual Basic for Applications i Access kan du generere en liste over brukere som er logget på en bestemt database.
208449 Nyhetsgruppen for Microsoft Access på Internett (denne artikkelen kan være på engelsk)
Hvis du vil ha mer informasjon om hvordan du gjør dette, kan du se delen Hvordan finne ut hvilke brukere/arbeidsstasjoner som gjør at filer merkes som usikker, senere i artikkelen.

Feil i nettverksmaskinvare

Noen ganger kan det oppstå skader uten at Jet-databasemotoren er involvert. Feil i nettverksmaskinvare kan for eksempel gjøre at en fil blir skadet. Årsaken kan være en eller flere koblinger i maskinvarekjeden mellom datamaskinen som databasen ligger på, og datamaskinen der databasen er åpnet. Listen omfatter, men er ikke begrenset til, nettverkskort, nettverkskabler, rutere og huber.

Hvis MDB-filer ikke kan gjenopprettes ved hjelp av komprimering, reparasjon eller Jetcomp, tyder det på at det har oppstått maskinvarebasert skade. Maskinvareskade vil vanligvis gjenta seg til den ansvarlige maskinvaren repareres eller erstattes.

Åpne og lagre MDB-filen i et annet program

Det går ikke an å gjenopprette en MDB-fil som er blitt åpnet og deretter lagret i et annet program. Du kan for eksempel åpne og lagre en MDB-fil i Microsoft Word, men hvis du gjør det, vil MDB-filen aldri kunne gjenopprettes, bortsett fra som en sikkerhetskopi. Hvis du utilsiktet åpner en MDB-fil i et annet program, må du ikke lagre filen. Det lønner seg ikke å åpne en MDB-fil i et annet program fordi alt du vil få opp er tilsynelatende en tilfeldig serie med tegn.

Kontrollere hvilke brukere/arbeidsstasjoner som gjør at filen blir merket som usikker

Når du feilsøker for å finne ut hvorfor databasen er skadet, er det kanskje nødvendig å finne ut hvem som er logget på databasen. Med Microsoft Visual Basic for Applications i Access 2002 eller Access 2003 kan du få tilgang til en liste over brukere som er logget på en bestemt database.
Hvis du vil ha mer informasjon om hvordan du gjør dette, kan du klikke artikkelnummeret nedenfor for å vise artikkelen i Microsoft Knowledge Base:
285822 Kontrollere hvem som er logget på en database ved hjelp av Microsoft Jet UserRoster i Access 2002 eller Access 2003. (denne artikkelen kan være på engelsk)

Fremgangsmåte for å forhindre skade

Slik kan du forhindre at databaser blir skadet:
  • Unngå strømbrudd mens databasen skriver. Strømbrudd mens databasen skriver kan føre til at tilstanden til databasen blir usikker.
  • Unngå å miste nettverkstilkoblinger.
  • Unngå unormal avslutning av Microsoft Jet-tilkoblinger, for eksempel gjennom strømbrudd, manuell avslutning eller avslutning av programmet via Oppgavebehandling.
  • Lukk alle DAO- og ADO-objekter du har åpne, mens du programmerer. Recordset-, QueryDef-, TableDef- og Database-objekter er eksempler på slike objekter.
  • Alvorlige systemfeil fører nesten alltid til uvanlig avslutning. Hvis databasen er utsatt for alvorlige systemfeil, bør du løse feilene før databasen blir for skadet til at den kan åpnes eller gjenopprettes. Hvis du vil ha mer informasjon om hvordan du gjør dette og hvilken eksempelkode du kan bruke, kan du klikke artikkelnummeret nedenfor for å vise artikkelen i Microsoft Knowledge Base:
    285822 Kontrollere hvem som er logget på en database ved hjelp av Microsoft Jet UserRoster i Access 2002 (denne artikkelen kan være på engelsk)
    Hvis du vil ha mer informasjon om alvorlige feil, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
    294301 ACC2002: Feilsøke etter alvorlige systemfeil i Access 2002 når du kjører Microsoft Windows 2000 (denne artikkelen kan være på engelsk)
  • Komprimer databasen ofte.
  • Ikke kjør IPX på Microsoft Windows NT Server når Jet-databaser er plassert på ulike steder i nettverket og klienten er Microsoft Windows 95 med IPX/SPX. Kjør i stedet TCP/IP på Windows NT Server og en dobbel protokollstakk av IPX og TCP/IP på Win95-klienten. (Windows NT til Windows NT med IPX/SPX fører ikke til problemer, og det gjør heller ikke Novell med noen klient.)
  • Unngå mange åpne- og lukkeoperasjoner i en løkke (mer enn 40 000 etterfølgende åpne- og lukkeoperasjoner kan forårsake skade).

Spesialmerknad om konverterte databaser

I eldre Access-versjoner enn Access 2002 fantes det ikke noen enkel måte å kontrollere hvilke objekter som var berørt og som muligens inneholdt merkbare skader, hvis det oppstod feil under konvertering av en database til den gjeldende versjonen.

Når det oppstår feil i Microsoft Access 2002 eller senere under konvertering av en Access-fil, kan du vise et sammendrag av disse feilene ved å åpne tabellen for konverteringsfeil i den nye Access-filen. Tabellen for konverteringsfeil inneholder følgende kolonner:

Objekttype. Typen databaseobjekt i Access hvor det oppstod en feil, eller database hvis det oppstod en feil i Access som ikke er spesifikk for en bestemt type objekt.

Objektnavn. Navnet på objektet i Access hvor det oppstod en feil. Hvis det oppstår en kompileringsfeil i Access under konvertering, angis imidlertid ikke navnet på modulen som inneholder feilen.

Feilbeskrivelse: Om nødvendig kan du trykke SKIFT+F2 for å vise hele feilbeskrivelsen.

Referanser

Hvis du vil ha mer informasjon om hvordan du reparerer databaser, kan du klikke Hjelp for Microsoft AccessHjelp-menyen, skrive inn reparasjon i Office-hjelperen eller svarveiviseren, og deretter klikke Søk for å vise emnene. Hvis du vil ha mer informasjon om hvordan du feilsøker databaser i tidligere versjoner av Access, klikker du følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
209137 Feilsøke og reparere en skadet Jet 4.0-database (denne artikkelen kan være på engelsk)
279334 Reparere en skadet Jet 3.5-database (denne artikkelen kan være på engelsk)
109953 ACC: Slik feilsøker og reparerer du skadede Jet 3.0-databaser og tidligere databaser
284152 Feilsøke etter alvorlige systemfeil i Access 2002 når du kjører Microsoft Millennium (denne artikkelen kan være på engelsk)

Egenskaper

Artikkel-ID: 283849 - Forrige gjennomgang: 14. september 2006 - Gjennomgang: 6.2
Informasjonen i denne artikkelen gjelder:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Nøkkelord: 
kbcorrupt kbtshoot kbhowto KB283849

Gi tilbakemelding

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com