Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Datenbank struktur vergleichen (https://www.delphipraxis.net/176905-firebird-datenbank-struktur-vergleichen.html)

waldforest 3. Okt 2013 09:59

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos

Firebird Datenbank struktur vergleichen
 
Hallo,
ich habe eine Anwendung geschrieben, welche über Zeos auf eine Firebirddatei zugreift.
Neben ca. 40 Tabellen beinhaltet diese einige Trigger und Proceduren, etc.

Im Laufe der Zeit haben sich Änderungen der Struktur, sowie bei den Feldern, Indizes, Trigger, Proceduren ergeben.

Ich suche nun eine Möglichkeit die neue Datenbank mit den bisherigen abzugleichen und anzupassen.
Bisher habe ich dies immer manuell durchgeführt, ist aber entsprechend zeitaufwendig.

Da ich das Thema hobbymäßig betreibe kommt eine kommerzielle Anwendung nicht in Frage.
Gerne, auch aus Lernzwecken, würde ich so etwas selber angehen.

Hierzu brauche ich ein Starthilfe, Empfehlung, wie so etwas angegangen wird und würde mich über ein paar Tipps freuen.

mfg

haentschman 3. Okt 2013 10:29

AW: Firebird Datenbank struktur vergleichen
 
Moin...8-)

im IBExpert kannst du die Struktur 2er Datenbanken vergleichen und dir ein Differenzscript erstellen lassen... besser als selbst. :wink:
Zitat:

Da ich das Thema hobbymäßig betreibe kommt eine kommerzielle Anwendung nicht in Frage.
...Personal Version. Bin mir allerdings jetzt nicht sicher ob diese Funktion da auch enthalten ist.

jobo 3. Okt 2013 10:36

AW: Firebird Datenbank struktur vergleichen
 
Ich arbeite selten mit Firebird, aber klassisch erzeugt man jeweils ein DDL Script von den betroffenen Systemen und verlgeicht diese mit dem Diff Tool seiner Wahl.
Für Firebird wäre das vermutlich
>isql -o <outputfile.sql> -x -u <user> -p <pw>
Difftools kennst Du sicher.

mjustin 3. Okt 2013 10:38

AW: Firebird Datenbank struktur vergleichen
 
Wo liegt das Problem denn genau, in der Ermittlung der Unterschiede oder in der Aktualisierung der Datenbankmetadaten? Da sich die Unterschiede ja (wenn man von versehentlichen Änderungen in der Zieldatenbank einmal absieht) aus den Änderungen in der Masterdatenbank ergeben, sollte es möglich sein, auf den Vergleich zu verzichten und "nur" die notwendigen DDL Befehle (alter table ...) in einem Updatetool zu hinterlegen.

In der Praxis wird wahrscheinlich auch eine Datenbankversionsnummer in einer Tabelle abgelegt, die man vor dem Update prüft. Dann "weiss" das Programm, welche Differenzen bestehen und wendet die DDL Befehle an. Falls alles funktioniert hat, wird die Versionsnummer aktualisiert.

Die Herausforderungen stecken aber wie immer im Detail, zum Beispiel kann es sein dass die Änderungen per DDL ein COMMIT (der aktuellen Transaktion) erfordern. Und Fehlerbehandlung ist wie immer spannend, wenn ein DDL Befehl scheitert, hat man einen 'undefinierten' Zustand der Metadaten.

Happy Coding :)

EgonHugeist 3. Okt 2013 10:56

AW: Firebird Datenbank struktur vergleichen
 
Zeos bietet eine TZSQLMetadata Komponente.

Diese kannst du benutzen, um die derzeitigen Strukturen, der Tabellen, Indizes, StoredProcedures, Trigger etc. auszulesen. Den eigentichen vergleich, jedoch, mußt du dennoch per Hand durchführen... Es sei denn, schau mal in die PM

waldforest 22. Dez 2013 08:45

AW: Firebird Datenbank struktur vergleichen
 
Hallo,
auf der Suche bin ich auf anliegndes Tool Interbase Restructurer gestoßen.
http://sourceforge.net/projects/ibrest/

und hier zum Source
http://sourceforge.net/projects/ibre...d?source=files


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

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