Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile? (https://www.delphipraxis.net/193855-meine-sqlite-datenbank-ist-korrupt-wie-bekomme-ich-sie-wieder-heile.html)

Der schöne Günther 15. Sep 2017 12:59

Datenbank: SQLite • Version: 3.8.7.4 • Zugriff über: FireDAC

Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
Stromausfall, SqLite-Datenbank kaputt. Sobald man sagt
Delphi-Quellcode:
myConnection.Connected := True
wirft FireDAC eine
Delphi-Quellcode:
ESQLiteNativeException
mit
Zitat:

[FireDAC][Phys][SQLite] ERROR: database disk image is malformed
.

Er hat auch Recht, sie scheint nicht in Ordnung zu sein. Jetzt hat FireDAC hierfür ein TFDSQLiteValidate im Angebot. Es bietet Methoden wie
Delphi-Quellcode:
Analyze(..)
oder
Delphi-Quellcode:
CheckOnly()
. Hört sich genau danach an was ich brauche.

Leider funktioniert das Ding nicht, denn das
Delphi-Quellcode:
TFDSQLiteValidate
erstellt sich als erstes seine eigene Sqlite-Connection und sagt darauf dann
Delphi-Quellcode:
open()
. Und das wirft leider schon die Exception. Ich kann mich im Debugger einklemmen und im Connection-String hierfür z.B. ein
Delphi-Quellcode:
; PRAGMA integrity_check
anhängen, dann gibt es keine Exception. Aber das bringt anscheinend den Ablauf durcheinander, das Tool meint dann alles sei in Ordnung was ja völliger Käse ist.


Meine Frage: Benutze ich das Ding falsch oder ist es kaputt?

mkinzler 15. Sep 2017 13:05

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
https://stackoverflow.com/questions/...lite3-database

Der schöne Günther 15. Sep 2017 13:26

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
Ich würde gerne vermeiden diese .exe mitzuliefern, immer auf dem passenden Stand zu halten und diese dann von meiner Software aufrufen und ihre Ausgaben zu parsen und weiterzuverarbeiten. Ich bin bislang nicht dahintergekommen wie ich von FireDAC aus diese "Pragma"-Kommandos absetze und ihre Rückgabe auswerten kann.

mensch72 15. Sep 2017 13:58

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
du wärest dumm, solche RepairTools mit deiner Software direkt mit zu liefern. Du hast ja sicher eine Backup-Klausel in deinen AGB wo der Kunde/Anwender dafür verantwortlich seine Daten so oft und gut wie er es für nötig hält regelmäßig zu sichern.


Wenn jetzt was kaputt, dann hat Kunde 3 Möglichkeiten:
- er nimmt sein letztes 4h Backup und alles ist gut
- er kontaktiert dich als SW-Lieferant und beantragt eine Einzelfallanalyse samt Support Angebot
- er kontaktiert XY und beantragt eine Einzelfallanalyse samt Support Angebot

Selbst für Kunden mit HighLevel SupportVertrag würde ich nie garantieren, das wir alle DB-Fehler stets zeitnah beheben können.

Bei SQlite verwenden wir kein FireDac, sondern UniDac wo es einen nativen PAS SQlite Zugriff ohne die DLL gibt. Im DumpMode konnten wir solange es phyisch vom Datenträger lesbar war, bisher alles wieder in den PC-Speicher holen und plain separat sichern... dann beginn stets die Einzelfall Arbeit: nämlich aktuell&al zu unterscheiden und wieder alles gesamt in eine konsitente Version zu bekommen. Das kann und macht bei uns aber niemals unsee Endkundenanwendung.

(Die Grenze bei der DB Wiederherstellung zu "Geht nicht mehr" liegt sehr hoch, es ist sehr oft nur eine Frages des Aufwandes/Willens und des Geldes.)

Delbor 18. Sep 2017 10:36

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
Hi zusammen

Zitat von mensch72:
Zitat:

...wo es einen nativen PAS SQlite Zugriff ohne die DLL gibt.
OK, in Sachen SQLite bin ich absoluter Anfänger. Doch ich glaubte bisher: SQLite ist die dll.
Dem scheint aber nach obiger Aussage nicht wirklich so zu sein...
Oder irre ich mich da?

Gruss
Delbor

Der schöne Günther 18. Sep 2017 10:56

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
 
Ich liefere auch keine dll mit, FireDAC embedded die sqlite-DLL glaube ich in die Anwendung. Irgendwo auf dem DocWiki stand genaueres und wie man das steuern kann, ich habe es nicht mehr im Kopf.



Zitat:

Zitat von mensch72 (Beitrag 1381289)
Backup-Klausel [...] AGB [...] beantragt eine Einzelfallanalyse samt Support Angebot

Vielen Dank für die interessanten Vorschläge aber so funktioniert das bei mir nicht.

Ich bin persönlich auch der Überzeugung dass man sein MTBF nicht unendlich hoch bekommt und es sich durchaus lohnt zu schauen wieviel man am MTBR drehen kann - Sprich: Automatische Wiederherstellung, oder zumindest automatische Wiederherstellung der letzten X Prozent. Besser als nichts. Insbesondere wenn der Kunde auf der anderen Seite der Welt sitzt und der Telefon-Support hier grade schläft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz