Announcement

Collapse
No announcement yet.

Defekte Struktur einer DBase Tabelle reparieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Defekte Struktur einer DBase Tabelle reparieren

    Hallo,
    hat jemand ein Tool oder eine Idee,
    um einen defekten Header einer DBase-Tabelle
    bzw. einer Indexdatei zu reparieren?

  • #2
    Hallo Klaus!

    In seltenen Fällen ist der Header einer DBF-Datei -zumeist nach einem
    Serverabsturz- zerstört. Dieser kann jedoch
    wieder repariert werden, so dass mit der Datenbank
    weitergearbeitet werden kann oder zumindest die Daten kopiert
    werden können. Ist nicht nur der Header, sondern auch teile der
    Datenbank defekt müssen natürlich größere Bereiche gelöscht
    und/oder ersetzt werden.

    Variante 1) Reparatur mittels Norton-Disk-Fix
    Mit dem Programm "Norton Disk Fix" können defekte DBF-Datenbanken
    (und übrigens auch andere Formate) menügesteuert repariert werden.
    Leider ist mir nicht genau bekannt, ob sich Probleme ergeben, weil
    Disk-Fix eventuell mit einer veralteten DBF-Struktur arbeitet. Die DBase-
    Dateien existieren in verschiedenen Varianten (I,II,III,IV,
    Clipper). Deshalb sollte nach einer Reparatur der Inhalt mittels
    in eine neue Datenbank kopiert werden.

    Variante 2) Reparatur mittels Hex-Editor

    Diese Möglichkeit ist etwas aufwendiger, bei sorgsamer Arbeit jedoch
    ebenso erfolgreich. Benötigt wird ein Hex-Editor (z.B. HexEdit von
    Norton oder PatchWorkLite vom WCC - Windows Command Center) oder ein
    guter Text-Editor der einen Hex-Modus aufweißt (ich empfehle UltraEdit,
    den übrigens jeder ernsthafte Programmierer haben sollte www.ultraedit.com ). Für
    eine vollständige Korrektur sollte allerdings die Anzahl der
    Datensätze in der Orginaldatenbank bekannt sein.

    Beschreibung für UltraEdit
    Im UltraEdit wird eine leere Datenbank mit gleichem Feldaufbau
    geladen. Der Header dieser Datenbank (bis zum Ende der
    Feldbeschreibungen im Header, letztes Byte 0D) wird kopiert und ersetzt den
    defekten Header der Orginaldatenbank. Der defekte Header kann
    einfach markiert und weggelöscht werden.

    Im Header befindet sich die Anzahl der Datensätze. Dieser Wert ist
    (aufgrund der leeren Vorlage-Datenbank) falsch und muss durch den
    ursprünglichen Wert ersetzt werden.

    Die Datensatzanzahl befindet sich in hexadezimaler Form im fünften
    bis siebten Byte. Es sind immer soviel Byte belegt, wie für die
    Zahl benötigt werden, der Rest enthält "00".

    Beispiel-Header:

    Byte: 1 2 3 4 5 6 7 8
    Eintrag: 03 64 04 04 64 F9 04 00 .....

    Dieser Header gehört zu einer Datenbank mit 325.998 Datensätzen,
    das sind Hexadezimal 4F964 (Anzeige im Windows-Taschenrechner)
    oder 04 F9 64 (korrekte Schreibweise). Die Eintragung im Header
    erfolgt nach dem "Low-Byte-First" Verfahren, zu deutsch: in
    umgekehrter Schreibweise 64 F9 04.

    Weiteres Beispiel:

    Byte: 1 2 3 4 5 6 7 8
    Eintrag: 03 00 04 05 03 00 00 00 .....

    Eine Datenbank mit 3 Datensätzen.

    Viel Glück beim Reparieren!

    Gruss Martin Rüthe

    Comment

    Working...
    X