ich prüfe gerade die Möglichkeiten, bei mehreren hundert Installationen mit FB 2.5 embedded eine (weitgehend automatische) Migration zu FB3 oder FB4 durchzuführen. Alle Migrations-Dokumentationen beschreiben immer nur die manuelle Migration einer einzelnen Datenbank für einen User, der problemlos auf der Kommandozeile mit GBK hantieren kann. Ich kann das, aber die Anwender meiner Applikation können das nicht. Die Migration muss daher so weit wie möglich automatisiert erfolgen.
Nachfolgend gehe ich mal von FB4 aus, da mir kein Grund einfällt, wenn ich schon den Aufwand betreibe, warum es dann nicht gleich FB4 sein sollte.
Firebird 5 ist auch gerade released - auch das wäre eine Option, aber bisher finde ich nur Beschreibungen für die Migration von 2.5 auf 3 oder 4 und von 4 auf 5, daher gehe ich mal davon aus, dass der direkte Weg von 2.5 auf 5 (noch) nicht möglich ist.
Meine Applikation verfügt über eine Backup/Restore Funktion, die vermutlich genutzt werden könnte. Zumindest das Backup ist verwendbar und erstellt eine ganz mormale FB2.5-FBK-Datei. Ob das Restore mit FB4 funktioniert kann ich selbst ermitteln, auch eine direkte Nutzung von GBAK im Rahmen der Installation wäre möglich. Ich möchte hier nur vermeiden, viele Stunden Versuch und Irrtum mit einer von vorneherein als unmöglich erkennbaren Vorgehensweise zu verschwenden und zuerst den grundsätzlich richtigen Weg klären. Die Details bekomme ich dann wieder alleine hin
![Lächeln :-)](./images/smilies/icon_e_smile.gif)
Folgende Verfahren kann ich mir vorstellen:
1) Neuinstallation mit leerer Datenbank. Dann Backup / Restore
Das wäre technisch am einfachsten, falls das so wie beschrieben generell möglich ist.
Hierzu würde ich meine Applikation als Neuinstallation mit einer leeren FB4-Datenbank ausliefern, die bereits alle notwendigen Vorbereitungen (Umstellung User/Authentisierung, weitere?) enthält und grundsätzlich so für einen neuen User nutzbar wäre. Dann müsten die Anwender nur noch einmal ein Backup in der alten Software durchführen und dann in der neuen Installation die Wiederherstellung.
Frage: ist das grundsätzlich möglich oder kann man erst nach der Wiederherstellung die Umstellung auf die neue Userstruktur/Authentisierung durchführen? Ich habe auch gelesen, dass man bei der alten Authentisierung (legacy authentication) bleiben kann (https://firebirdsql.org/en/news/firebir ... tion-guide), habe das aber noch nicht so ganz verstanden. Wenn das der empfohlene Weg ist, grabe ich mch da tiefer rein und erstelle ein Migrations-Programm, das diesen Weg nutzt.
2) alles mit der vorhandenen Installation durchführen
Das würde für die Anwender nochmals das Verfahren erleichtern, da sie keine Zweitinstallation sondern nur ein Update durchführen müssten. Das wäre meine bevorzugte Lösung, aber auch die mit deutlich mehr Fehler-Möglichkeiten und evtl. so wie ich mir das denke gar nicht machbar.
Hier wäre es erforderlich, dass die Applikation vor dem Verbindungsversuch zur Datenbank erkennen kann, ob eine FB2.5 oder FB4 Datenbank vorliegt. Der Pfad zur Datenbank ist bekannt, ich müsste aber irgendwie (Check von identifizierenden Bytes in der Datei?) erkennen, ob es eine FB 2.5 Datenbank-Datei ist.
Falls das nicht möglich ist, kann ich den Dateinamen der Datenbank-Datei heranziehen und ab FB4 anders nennen. Das ist aber ein unsicheres Verfahren, da die Datei grundsätzlich einen beliebigen Namen haben kann. 99% der User nehmen zwar den Standard, aber trotzdem wäre es gut, eine Version unabhängig vom Dateinamen "sicher" erkennen zu können.
Möglicher Ablauf:
- notwendige Tools (GBAK...) in einem neuen Ordner je Version mit installieren
- Prüfen der FB-Version der Datenbankdatei
- wenn FB2.5 gefunden: Backup mit GBAK aus dem FB2.5-Ordner erstellen, Restore mit dem GBAK aus dem FB4-Ordner mit neuem Dateinamen der Datenbank-Datei, damit sie einfacher als FB4 erkennbar ist (siehe dazu auch Überlegungen oben)
- Prüfen ob das Update funktioniert hat
- wenn ja: Applikation nutzt den FB4 embedded Client fbclient.dll mit der neuen Datenbank-Datei
- wenn nein: Applikation nutzt den FB2.5-Client mit fembed.dll und der alten Datenbankdatei
Bin ich da vielleicht auf einem völlig falschen Weg?
So, das war jetzt mal ein langer Text. Vielen Dank daher an alle, die bis hierhin durchgehalten haben und gamz großes Dankeschön für alle Tipps und Warnungen, die mich von einem vielleicht völlig falschen Weg abbringen.
Siegbert