Es passiert mit NexusDB sehr selten, dass man eine korrupte Tabelle erhält, hier zahlt sich das Client/Server Prinzip und die Robustheit der Datenbank schon aus. Heute hatte ich leider einen solchen Fall, verursacht durch einen eigenen Programmierfehler, was natürlich mal vorkommen kann.
Problem ist dann, dass man den verursachenden Datensatz nicht mal löschen kann, in meinen Fall kam dann ständig die Fehlermeldung „Invalid Segment Number“ – unangenehm, weil auch wegklicken nichts hilft. Das Ganze passierte auch im Nexus Enterprice Manager, der dann auch nur noch über den Windows Task Manager gestoppt werden konnte.
Lösung über den Nexus Enterprice Manager
Um das Problem zu lösen klickt man im Nexus Enterprice Manager die Tabelle einfach rechts an wählt aus dem Kontextmenü „Recover Records“ – anschließend stehen die Datensätze, die in Ordnung sind, in der Tabelle „Tabelle_Recvored“, die betroffenen Datensätze in „Tabelle_Failed“. In meinem Fall stand auch dort genau der eine Datensatz drin, der das Problem verursachte.
Hilft dann nur noch die Originaltabelle zu löschen und anschließend die Tabelle „Tabelle_Recoverd“ umzubennen. „Tabelle_Failed“ konnte ich beruhigt löschen, weil zu retten gab es da nichts mehr.
Dieser „Invalid Segment Number“ – Fehler trat bei mir übrigens zum ersten Mal seit 3 Jahren auf, bisher gab es weder bei mir noch bei Kunden / Anwendern unserer Software auch nur einen einzigen Datenbankschaden, was ein erheblicher Unterschied zu Foxpro – Zeiten ist, wo dies doch hin und wieder auftrat, auch wenn das eigene Reparaturtool dies meist problemlos konnte. Hier hat sich die Umstellung von Visual Foxpro auf Delphi / NexusDB bereits voll bezahlt gemacht.