Sådan foretages fejlfinding og reparation af en beskadiget Access 2002-database eller nyere

Oversættelser af artikler Oversættelser af artikler
Artikel-id: 283849 - Få vist de produkter, som denne artikel refererer til.
Begyndere: Kræver kendskab til brugergrænsefladen på enkeltbrugercomputere.

Oplysningerne i denne artikel gælder kun for en Microsoft Access-database (.mdb).

Du kan finde en Microsoft Access 97-version af denne artikel under 279334. Artiklen er evt. på engelsk.
Du kan finde en Microsoft Access 2000-version af denne artikel under 209137. Artiklen er evt. på engelsk.
Udvid alle | Skjul alle

På denne side

Sammenfatning

Adskillige faktorer både i og uden for Access kan beskadige dine databasefiler. Der er forskellige symptomer på en beskadiget database: Der kan stå #Slettet i visse poster, det kan være umuligt at åbne et af objekterne i databasen, eller det kan være umuligt at åbne hele databasefilen i Access. Værktøjet Reparer og Komprimer i Microsoft Access er et nyttigt værktøj, hvis du vil forsøge at optimere eller reparere Microsoft Access-databasefiler. I denne artikel beskrives dette Access-værktøj, og der gives alternative metoder til at forsøge reparation af beskadigede databaser. Artiklen indeholder også oplysninger om, hvad der kan medføre skader på databaser.

Bemærk! Microsoft Jet, den databasemotor der bruges i Microsoft Access, er et databasesystem til fildeling. Når Microsoft Jet bruges i et flerbrugermiljø, bruger flere klientprocesser handlinger til at læse, skrive og låse filer på en delt database. Fordi flere klientprocesser læser og skriver på den samme database, og fordi Jet ikke bruger en transaktionslog (det gør de mere avancerede databasesystemer som f.eks. SQL-server), er det ikke muligt på en sikker måde at forhindre alle former for skader på databaser. Hvis du har brug for et databasesystem 24 timer i døgnet, syv dage om ugen i et flerbrugermiljø, anbefaler Microsoft, at du bruger et ægte klient/server-databasesystem, der understøtter varige transaktioner, som f.eks. Microsoft SQL-server.

Yderligere Information

Den fremgangsmåde, der er beskrevet i denne artikel, gendanner i reglen beskadigede databasefiler, men for at beskytte dine data, anbefaler Microsoft, at du tager en sikkerhedskopi af databasefilen, så ofte du kan.

Beskrivelse af værktøjet Reparer og komprimer

Komprimer en database

Når du komprimerer en database, vil komprimeringsprocessen genanvende ubrugt plads i en database, der er til overs efter sletning af objekter og poster. Det sker ved, at der oprettes en ny destinationsdatabase, og ved at alle objekterne fra den gamle database kopieres til den nye database. Hvis du vælger at komprimere databasen til det oprindelige databasenavn i stedet for til en ny database, opretter komprimeringsprocessen en midlertidig database, eksporterer alle objekterne fra den oprindelige database til den midlertidige database, fjerner den oprindelige database og omdøber derefter den midlertidige database til navnet på den oprindelige database.

Her følger en liste over de handlinger, komprimeringsprocessen udfører:
  • Den reorganiserer siderne i en tabel, så de ligger ved side af hinanden i databasen. Hermed forbedres ydeevnen, fordi tabellen ikke længere er fragmenteret på tværs af databasen.
  • Den genanvender den ubrugte plads, der er til overs efter sletning af objekter og poster. Når objekter og poster slettes fra databasen, bliver den plads, de optog, markeret som tilgængelig for nye tilføjelser til databasen. Men databasen bliver ikke mindre, medmindre du komprimerer databasen. Hvis du ofte tilføjer, sletter og opdaterer objekter og poster i en database, bør du komprimere den med jævne mellemrum.
  • Den nulstiller felterne AutoNumber med intervaller, så den næste værdi, der tildeles, er én højere end den højeste værdi i de resterende poster. Hvis alle posterne i databasen f.eks. er blevet slettet, efter du har komprimeret databasen, bliver værdien i feltet AutoNumber sat til 1, når den næste post tilføjes. Hvis den højeste værdi for AutoNumber i databasen er 50, efter du har komprimeret databasen, bliver værdien i feltet AutoNumber sat til 51, når den for den næste tilføjes. Bemærk, at dette også gælder, hvis du tilføjede poster, der indeholdt værdier over 50, men slettede dem, før du komprimerede databasen.
  • Den gendanner de tabelstatistikker, der bruges under optimering af forespørgsler. Disse statistikker kan forældes med tiden. Det sker typisk, hvis transaktioner annulleres, eller hvis databasen ikke lukkes korrekt, pga. uventet strømsvigt eller fordi computeren slukkes, inden det program, der bruger Microsoft Jet, har haft mulighed for at afslutte helt.
  • Den markerer alle forespørgsler, så de kompileres igen, næste gang denne forespørgsel køres. Dette er vigtigt, fordi statistikken for en database kan ændre sig, og en tidligere kompileret forespørgsel kan have en unøjagtig forespørgselsplan.
Reparation af en database

Reparationsprocessen forsøger kun at reparere tabellerne, forespørgslerne og indekserne i databasen. Den reparerer ikke beskadigede formularer, rapporter, makroer eller moduler.

Det skal du huske, inden værktøjet Reparer og Komprimer køres

Inden du kører værktøjet Reparer og Komprimer på en database, skal du sørge for følgende:
  • Sørg for, at der nok ledig lagerplads på harddisken til både den oprindelige og den komprimerede version af Access-databasen. Det betyder, at der skal være nok ledig lagerplads på drevet til mindst det dobbelte af, hvad Access-databasen fylder. Hvis du har brug for at frigøre plads, kan du slettet unødvendige filer fra drevet eller, hvis det er muligt, flytte Access-databasen til et drev, der har mere ledig plads.
  • Sørg for, at du har tilladelser til både Åbn/Kør og Åbn med udelt adgang for Access-databasen. Hvis du ejer databasen, skal du kontrollere, at tilladelserne er angivet. Hvis du ikke ejer databasen, skal du kontakte ejeren for at undersøge, om du kan få disse tilladelser.
  • Sørg for, at ingen brugere har Access-databasen åben.
  • Sørg for, at Access-databasen ikke er placeret på skrivebeskyttet netværksshare eller har filattributtet angivet til skrivebeskyttet.

Fremgangsmåde til at forsøge reparation af en beskadiget database

Den følgende fremgangsmåde giver en generel metode til at reparere en beskadiget database:
  1. Lav en kopi af den beskadigede databasefil (.mdb), så du har en sikkerhedskopi.
  2. Slet .ldb-filen, hvis den findes. Du skal lukke den tilhørende .mdb-fil, inden du sletter .ldb-filen.

    Denne .ldb-fil bruges til at afgøre, hvilke poster der er låst i en delt database, og af hvem. Hvis en database bliver åbnet til fælles brug, bliver der oprettet en .ldb-fil med det samme navn som den tilhørende database (.mdb). Hvis du f.eks. åbner eksempeldatabasen Northwind.mdb i mappen C:\Msoffice\Access til fælles brug, oprettes der automatisk en fil med navnet Northwind.ldb i den samme mappe. Når den sidste bruger har forladt databasen, slettes .ldb.filen automatisk, sog med disse to undtagelser - hvis den sidste bruger ikke har sletterettigheder til den mappe, der indeholder .mdb-filen, eller hvis databasen er beskadiget. I .ldb-filen findes en liste over bruger, der har databasen åben.
  3. Kør værktøjet Reparer og Komprimer. Det kan du gøre ved at følge disse trin:
    1. Hvis databasen er åben, skal du lukke den.
    2. Peg på Databasefunktioner i menuen Funktioner, og klik derefter på Komprimer og reparer database.
    3. I dialogboksen Komprimer fra database skal du markere den fil, du vil komprimere, og derefter klikke på Komprimer.
    4. Skriv et nyt filnavn i dialogboksen Komprimer database til, og klik derefter på Gem.

      Hvis det ikke lykkes at komprimere og reparere, får du vist en meddelelse om det. Det betyder, at skaden er så alvorlig, at den ikke kan repareres.
  4. Hvis det ikke lykkes at gendanne den beskadigede database med ovennævnte fremgangsmåde, kan du prøve at oprette en ny database og importere objekterne enkeltvis fra den gamle database. Derefter skal du genoprette relationerne. Denne metode løser problemerne med beskadigede systemtabeller i databasen.

    Bemærk! Du kan ikke importere dataadgangssider med guiden Importer. I stedet skal du åbne en eksisterende dataadgangsside i den nye database. Det kan du gøre ved at følge disse trin:
    1. Klik på Sider under Objekter i databasevinduet.
    2. Klik på Ny.
    3. Klik på Eksisterede webside i dialogboksenNy dataadgangsside, og klik derefter på OK.
    4. Gå til dataadgangssidens placering i vinduet Søg efter webside.
  5. Hvis skaden er i en tabel, og tabellen ikke er blevet repareret med den foregående fremgangsmåde, kan du prøve følgende:
    1. Eksporter i Microsoft Access tabellen til en ASCII-fil (afgrænset tekst). Få flere oplysninger om emnet "Eksporter data eller databaseobjekter" i Microsoft Access Hjælp.
    2. Slet alle relationer, der er tilknyttet denne tabel, og slet derefter tabellen i databasen.
    3. Komprimer databasen.
    4. Genopret tabellen og alle de relationer, den havde.
    5. Brug et tekstbehandlingsprogram til at finde og fjerne ugyldige eller mystiske data i ASCII-filen. Gem filen i et ASCII-tekstformat.
    6. Importer ASCII-filen igen til den tabel, du lige har genoprettet. Hvis du vil have flere oplysninger om dette emne, kan du søge ved hjælp af indekset i Microsoft Access Hjælp efter ordene "afgræns" og derefter se emnet "Importer eller sammenkæd data og objekter."
    7. Angiv alle de poster igen, du blev nødt til at slette.
  6. Hvis skaden er i en formular eller en rapport, kan skaden være enten i selve formularen eller rapporten eller i et eller flere kontrolelementer i formularen eller rapporten. Du kan slette formularen eller rapporten og importere den fra sikkerhedskopien af databasen eller benytte en af følgende fremgangsmåder:
    • Hvis skaden er i selve formularen eller rapporten, skal du oprette en ny formular eller rapport og derefter kopiere kontrolelementerne fra den oprindelige formular eller rapport.
    • Hvis skaden er i et kontrolelement i formularen eller rapporten, skal du oprette en ny formular eller rapport og derefter genoprette kontrolelementerne i den oprindelige formular eller rapport. Det er bedst at genoprette alle kontrolelementerne, for det er umuligt at afgøre, hvilke kontrolelementer der er beskadiget.
  7. Hvis skaden er i en makro eller et modul, kan den være i selve makroen eller modulet eller i indholdet. Du kan slette makroen eller modulet og importere den eller det fra sikkerhedskopien af databasen eller benytte en af følgende fremgangsmåder:
    • Hvis skaden er i selve makroen eller modulet, skal du oprette en ny makro eller et nyt modul og derefter kopiere kontrolelementerne fra den oprindelige makro eller det oprindelige modul.
    • Skaden kan omfatte ikke-ASCII-tegn, der er integreret i modulet. Gem modulet som en tekstfil, fjern alle ugyldige eller mystiske data, og indlæs derefter tekstfilen igen i et nyt modul.
    • Hvis skaden er i indholdet af makroen eller modulet, skal du oprette en ny makro eller et nyt modul og derefter genoprette indholdet af den oprindelige makro eller det oprindelige modul.
Hvis du ikke kan reparere databasen med disse fremgangsmåder, er skaden sandsynligvis for alvorlig til, at den kan repareres. Hvis det er tilfældet, skal du gendanne databasen fra din seneste sikkerhedskopi eller genoprette databasen.

Som et sidste alternativ tilbyder nogle konsulenter en reparationstjeneste til Microsoft Access. Eftersom denne tjeneste er så specialiseret, er den mest effektive måde at finde en konsulent på at anbringe en meddelelse på Access-nyhedsgruppen "Third Party and User Groups", som har følgende nyhedsgruppeadresse:
microsoft.public.access.3rdpartyusrgrp
Du finder flere oplysninger om nyhedsgrupper om Microsoft Access i følgende artikel i Microsoft Knowledge Base: Du kan finde flere oplysninger ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
287756 Feltet AutoNumber nulstilles ikke, når du har komprimeret en database. Artiklen er evt. på engelsk.

Sådan kan .mdb-filer blive beskadiget

Der er følgende tre hovedårsager til, at en .mdb-fil kan blive beskadiget:
  • Afbrudt skrivehandling
  • Fejlbehæftet netværkshardware
  • .mdb-filen åbnes og gemmes i et andet program

Afbrudt skrivehandling

Du bør altid afslutte Access korrekt ved at klikke på Afslut eller Luk i menuen Filer. Hvis en database er åben og skriver data, når Access afsluttes unormalt, kan databasemotoren i Jet imidlertid markere databasen suspekt/beskadiget. Dette kan forekomme, hvis du slukker computeren manuelt uden at afslutte Windows først, eller hvis strømmen forsvinder. I andre situationer lukkes Access muligvis ikke, men Jet kan stadig blive påvirket, mens den skriver data til disken, og databasen er åben. Dette kan f.eks. ske, når der forekommer datakollisioner, eller når der er funktionsfejl på diskdrev i netværk. Hvis nogen af disse afbrydelser forekommer, kan Jet angive, at databasen muligvis er beskadiget.

Jet indstiller et flag, når den påbegynder en skrivehandling, og den nulstiller derefter flaget, når handlingen er gennemført. Hvis skrivehandlingen afbrydes, nulstilles flaget ikke. Når du prøver at åbne databasen igen, finder Jet ud af, at flaget er indstillet, og rapporterer, at databasen er beskadiget. I de fleste tilfælde er dataene i databasen faktisk ikke beskadiget, men flaget giver Jet besked om, at der kan være opstået en skade. I tilfælde som dette kan du oftest gendanne databasen ved at komprimere og/eller reparere databasen. Heldigvis findes der metoder, du kan bruge til at afgøre, hvilken bruger og arbejdsstation der var ansvarlig for at markere filen som suspekt. Med Microsoft Visual Basic for Applications i Access kan du udskrive en liste over brugere, der er logget på en bestemt database.
208449 Tilgængelige nyhedsgruppe om Microsoft Access. Artiklen er evt. på engelsk.
Flere oplysninger om denne handling finder du i afsnittet "Sådan identificeres brugere og/eller arbejdsstationer, der er årsag til, at filen bliver markeret som suspekt" senere i artiklen.

Fejlbehæftet netværkshardware

Nogle gange kan beskadigelse forekomme, uden at databasemotoren Jet er involveret. Fejlbehæftet netværkshardware kan f.eks. medføre, at en fil beskadiges. Årsagen kan være et eller flere led i hardwarekæden mellem den computer, hvor databasen findes, og den computer, der har databasen åben. Listen omfatter, men er ikke begrænset til, netværkskort, netværkskabler, routere og hubs.

Hardwarerelaterede skader opdages typisk ved, at mdb-filen ikke kan gendannes ved hjælp af komprimering, reparation eller Jetcomp. Hardwareskader optræder oftest gentagne gange, indtil den hardware, der er skyld i fejlen, bliver repareret eller skiftet ud.

.mdb-filen åbnes og gemmes i et andet program

Der findes ingen metoder til at gendanne en .mdb-fil, der er blevet åbnet og gemt i et andet program. Du kan f.eks. åbne og gemme en .mdb-fil i Microsoft Word, men hvis du gør det, kan .mdb-filen aldrig gendannes, medmindre der findes en sikkerhedskopi. Hvis du ved et uheld åbner en .mdb-fil i et andet program, skal du sørge for ikke at gemme den. Det tjener ikke noget formål at åbne en .mdb-fil i et andet program, for du får kun vist en tilsyneladende tilfældig række tegn.

Sådan identificeres brugere og/eller arbejdsstationer, der er årsag til, at filen bliver markeret som suspekt

Når du foretager fejlfinding for at identificere, hvad der er årsag til skader på databaser, bliver du måske nødt til at se, hvem der er logget på databasen. Med Microsoft Visual Basic for Applications i Access 2002 eller i Access 2003 kan du få adgang til en liste over brugere, der er logget på en bestemt database.
Flere oplysninger om, hvordan dette skal gøres, finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
285822 Sådan finder du ud af, hvem der er logget på en database ved hjælp af Microsoft Jet UserRoster i Access 2002 eller i Access 2003. Artiklen er evt. på engelsk.

Fremgangsmåder, der kan forhindre skader

Undgå beskadigelse af databaser ved at:
  • Undgå strømafbrydelser under skrivning til databaser. Hvis strømmen forsvinder under skrivning til database, kan databasen overgå til en suspekt tilstand.
  • Undgå at afbryde netværksforbindelser.
  • Undgå unormale afbrydelser af forbindelser til Microsoft Jet som f.eks. strømsvigt, manuel lukning, lukning af programmet ved hjælp af Jobliste mv.
  • Når du programmerer, skal du lukke alle åbne DAO- og ADO-objekter. Eksemplerne omfatter Recordset-, QueryDef-, TableDef og Database-objekter.
  • Alvorlige systemfejl forårsager næsten altid unormal afslutning. Hvis databasen ofte kommer ud for alvorlige fejl, bør du løse problemerne, før databasen bliver for beskadiget til at kunne åbnes eller gendannes. Flere oplysninger om, hvordan at løse problemerne og om eksempelkode, du kan bruge, finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
    285822 Sådan finder du ud af, hvem der er logget på en database ved hjælp af Microsoft Jet UserRoster i Access 2002 eller i Access 2003. Artiklen er evt. på engelsk.
    Flere oplysninger om alvorlige systemfejl finder du ved at klikke på følgende artikelnumre for at få vist artiklerne i Microsoft Knowledge Base:
    294301 Access 2002: Sådan foretages fejlfinding af alvorlige systemfejl i Access 2002, der kører på Microsoft Windows 2000. Artiklen er evt. på engelsk.
  • Komprimer databasen jævnligt.
  • Kør ikke IPX på Microsoft Windows NT Server, hvis der er placeret Jet-databaser over hele netværket, og klienten er Microsoft Windows 95 med IPX/SPX. Kør i stedet TCP/IP på Windows NT-serveren og en dobbelt protokolstak med IPX og TCP/IP på Windows 95-klienten. (Det giver ikke problemer at køre Windows NT til Windows NT med IPX/SPX eller Novell op imod en anden klient).
  • Undgå mange åbne- og lukkehandlinger i en løkke (mere end 40.000 åbne- og lukkehandlinger i træk kan resultere i beskadigelse).

Særlig bemærkning om konverterede databaser

Hvis der opstod fejl under konverteringen af databaser fra versioner af Access, der er tidligere end Access 2002, til den aktuelle version, er det ikke muligt at afgøre, hvilke objekter der blev berørt og muligvis indeholder synlige skader.

Når Microsoft Access 2002 eller nyere finder fejl under konvertering af en Access-fil, kan du se en oversigt over disse fejl ved at åbne tabellen Konverteringsfejl i den nye Access-fil. Tabellen Konverteringsfejl indeholder følgende kolonner:

Objekttype. Den type databaseobjekt, som Access fandt en fejl i, eller "Database" hvis Access fandt en fejl, der ikke er specifik for en bestemt type objekt.

Objektnavn. Navnet på objektet, som Access fandt en fejl i. Hvis Access finder en kompileringsfejl under konverteringen, angives dog ikke navnet på det modul, der indeholder fejlen.

Fejlbeskrivelse: Tryk om nødvendigt på SHIFT+F2 for at få vist hele fejlbeskrivelsen.

Referencer

Flere oplysninger om reparation af databaser finder du ved at klikke på Microsoft Access Hjælp i menuen Hjælp, skrive reparation i Office-assistenten eller Smart søgning og derefter klikke på Søg for at se emnerne. Flere oplysninger om fejlfinding af databaser i tidligere versioner af Access finder du ved at klikke på følgende artikelnumre for at få vist artiklerne i Microsoft Knowledge Base:
209137 Sådan foretages fejlfinding og reparation af en beskadiget Jet 4.0-database. Artiklen er evt. på engelsk.
279334 Sådan repareres en beskadiget Jet 3.5-database. Artiklen er evt. på engelsk.
109953 Access: Fejlfinding/reparation af beskadigede Jet 3.0-databaser og ældre databaser
284152 Sådan foretages fejlfinding af alvorlige systemfejl i Access 2002, der kører på Windows Millenium. Artiklen er evt. på engelsk.

Egenskaber

Artikel-id: 283849 - Seneste redigering: 14. september 2006 - Redigering: 6.2
Oplysningerne i denne artikel gælder:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Nøgleord: 
kbcorrupt kbtshoot kbhowto KB283849

Send feedback

 

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