Wissensdatenbank

In unserer Wissensdatenbank können Sie schnell und unkompliziert nach Beiträgen und Tipps rund um ErgoFAKT stöbern.

Zur Suche tragen Sie bitte den gewünschten Suchbegriff in das Suchfeld ein.

Nach Betätigen von [Enter] bzw. einem Klick auf das Lupensymbol wird die Suche gestartet.

Werden mehrere Wörter eingetragen, erscheinen nur die Treffer, in denen alle Wörter vorkommen.

 

#11  
Vorgehensweise bei fehlerhaften SQL-Datenbanken 
Vorgehensweise bei fehlerhaften SQL-Datenbanken
Auftreten von SQL-Fehlermeldungen in ErgoFAKT ProSQL oder bei Backup-Durchläufen.
Häufig ist ein Datenbankdefekt bereits durch einen Backup-Durchlauf des ErgoFAKT-Sicherungstools festzustellen. Wenn dort ein Fehler auftritt, kann man von tiefergehenden strukturellen Datenbank-Problemen ausgehen.

BITTE BEACHTEN:
Das Reparieren bzw. Clonen einer SQL-Datenbank sollte nur von Administratoren oder fachkundigen Spezialisten übernommen werden. Es ist leicht möglich, in einer leicht beschädigten Datenbank durch Fehler noch mehr Daten zu löschen, bzw. diese völlig unbrauchbar zu machen.
Deshalb sollte vor Beginn eines Reparaturversuches auf jeden Fall die Datenbank per Sicherungstool gesichert werden. Ist dies durch einen Fehler in der Datenbank nicht mehr möglich, kann die Datenbank bei DEAKTIVIERTEM Interbase-Server auch ganz normal kopiert werden.
Für die Reparatur-Versuche empfiehlt es sich, auf einem extra Rechner einen Interbase-Server zu installieren und zu starten. Anschließend kann dort in einem abgeschlossenem System die Datenbank repariert und ausgiebig getestet werden.
Kopieren Sie die Datenbank erst wieder auf den Hauptdatenbankserver zurück, wenn alle Tests fehlerfrei durchgelaufen sind!

Der erste Schritt ist, die Datenbank per Validate zu testen. Hierfür in der IB-Console auf den Local Server connecten und die Datenbank per Database | Maintenance | Shutdown schließen. Per Database | Maintenance | Validation einen Validate-Durchlauf starten. "Validate Record Fragments" auf True setzen, "Read only Validation" und "Ignore Checksum Errors" auf False belassen. Falls nun Fehler in der Datenbank-Strukur gefunden werden, auf Repair klicken und danach nochmal eine Validation starten, um zu testen, ob noch Fehler vorhanden sind.

Danach kann noch per Kommandozeile gfix mit dem Parameter -m gestartet werden (Mark corrupt records as unavailable,so they are skipped
(for example, during a subsequent backup).):
gfix -m e:\db\ergofakt.gdb -user SYSDBA -password masterkey

Anschließend kann ein erneuter Backup-Versuch gestartet werden, bei dem die durch gfix -m als defekt markierten Datensätze übersprungen werden sollten (verloren gehen).

Falls der erneute Backup-Versuch immer noch Fehlermeldungen verursacht, kann versucht werden, per CloneDB die noch lesbaren Datensätze in eine neue leere Datenbank (.gdb) zu kopieren. Je nach Umfang dauert der Vorgang ca. 1 Stunde.

Hierfür die Datei clonedb.exe starten und unter 'Source' die defekte Quelldatenbank, bzw. unter 'Dest' die leere Zieldatenbank eintragen. Als Benutzername 'SYSDBA' und als Passwort bitte 'masterkey' verwenden. In der unteren Listen können die gewünschten Tabellen für den Clonvorgang ausgewählt werden. In der Regel kann man hier jedoch über die Schaltfläche 'Alle' sämtliche Tabellen der Datenbank selektieren.
Die Checkbox 'Fehler ignorieren steuert, ob auftretende Fehler als Messagebox gemeldet werden, oder nur in das Log-File eingetragen und übersprungen werden.
Die Checkbox 'Schlüsselwerte kopieren' steuert, ob die Generatoren der Datenbank mitkopiert werden sollen. Diese Option sollte von Haus aus aktiviert sein. Nur bei Fehlern mit den Generatoren, sollte diese Option deaktiviert werden.
Falls alle Einstellungen getroffen wurden, wird mit dem Clon-Vorgang durch einen Klick auf 'Start' begonnen.

Falls beim Clonen ebenfalls Fehler auftreten, kann man im Log (Clonedb.txt) nachschauen, in welcher Tabelle der Fehler auftritt. Danach kann man per Interbase Console den Fehler in der entsprechenden Tabelle suchen und ggf. per Hand bereinigen.
Falls ein Fehler mit Generatoren angezeigt wird, kann man diesen vernachlässigen, da die Generatoren in einer neuen Datenbank sowieso schon vorhanden sind oder durch das anschließende Datebankupdate erzeugt werden.
Falls keine Fehler mehr auftreten, sollte nun ein Datenbank-Update mittels update.exe gemacht werden.

Danach sollte man noch das Script in ErgoFAKT ProSQL zum Updaten der Key-Felder der Journale durchlaufen lassen, um die Generatoren auf den Stand der letzten Schlüsselwerte in den zugehörigen Tabellen zu setzen.

Durch einen weiteren Backup-/Validate-Durchgang kann man sich nun von der strukturellen Fehlerfreiheit der Datenbank überzeugen.

Falls dies alles nicht den gewünschten Erfolg bringt, hilft nur noch die manuelle Fehlersuche in den entsprechenden Tabellen mittels der Interbase-Console. Auffällige Datensätze können somit ggf. korrigiert oder gelöscht werden.

Generell Beachten!:
*.gdb-Dateien nur kopieren, wenn der SQL-Server beendet wurde. Nur dann ist sichergestellt, daß keine Tabellen bzw. Datensätze geöffnet sind.

Bitte beachten Sie, dass wir diese Informationen nur unter Haftungsausschluß zur Verfügung stellen.
Änderungen und Irrtum vorbehalten. Für Hinweise auf Fehler sind wir jederzeit dankbar.


Vorheriger Eintrag:
Universalplatzhalter zum Druck beliebiger Datenbankwerte
Nächster Eintrag:
Summieren mehrerer Werte eines Platzhalters in einem Formular