Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Update Metadaten SQL (https://www.delphipraxis.net/136084-update-metadaten-sql.html)

hanspeter 23. Jun 2009 10:36

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

Update Metadaten SQL
 
Hallo,
ich erzeuge eine FB Datenbank über einen von IBExpert ausgegebenen Script.
Jetzt möchte ich bei Programmneustart diesen Script mit der aktiven Datenbank
vergleichen und die vorhandene Datenbank updaten.
(Es können nur Felder hinzukommen oder die Größe von Feldern wird geändert.)
Ehe ich selbst anfange zu programmieren, kennt wer eine fertige Lösung?
IBExpert z.B. vergleicht 2 Datenbanken und erzeugt daraus einen Differenzscript.
IbExpert möchte ich bei dem Anwender aber nicht voraussetzen.

Mit Gruß
Peter

mkinzler 23. Jun 2009 10:39

Re: Update Metadaten SQL
 
Vergleiche die Systemtabellen

hanspeter 23. Jun 2009 11:43

Re: Update Metadaten SQL
 
Zitat:

Zitat von mkinzler
Vergleiche die Systemtabellen

Wie man das realisieren kann weis ich selber.
Die Datenbank ist auf dem User-Rechner nur einmal da, da gibt es keine zwei Systemtabellen zum Vergleich.

Meine Frage ist, ob jemand ein Tool kennt, das auch etwas kosten darf,
was mir einen Differenzscript zwischen aktueller Datenbank und einen
Referenzscript erzeugt oder die Datenbank gleich modifiziert.


Gruß
Peter

generic 23. Jun 2009 12:47

Re: Update Metadaten SQL
 
LiquiBase!
http://en.wikipedia.org/wiki/LiquiBase

manfred_h 23. Jun 2009 14:16

Re: Update Metadaten SQL
 
Hallo Hanspeter

für IBExpert existiert ein Plugin IBDatabase Comparer.
Womöglich hilft Dir dieser weiter.

Shalom
Manfred

DeddyH 23. Jun 2009 14:17

Re: Update Metadaten SQL
 
Müsste dazu aber nicht IBExpert auch beim Kunden installiert sein?

hanspeter 23. Jun 2009 14:29

Re: Update Metadaten SQL
 
Danke.

LiquiBase schaue ich mir mal an.

Ich habe IBExpert als Vollversion. Da ist das Plugin dabei. Habe ich auch schon verwendet.
Da werden zwei Datenbanken vergleichen und ein Differenzscript erstellt.
Entweder nur für die Metadaten oder für Metadaten und Userdaten.

Der Hintergrund meiner Frage ist übrigens nicht uninteressant.
Ich habe FB Datenbanken bisher aus dem Programm heraus erzeugt. Mit D2009 aber Probleme mit der
Anzahl der Proceduren und Strings in einem Unit bekommen.

Jetzt habe ich auf Neuanlage über einen Script umgestellt. Diesen liefere ich auch als Update aus.
Der Script wird von IBExpert erzeugt und hat in der 2. Quellzeile einen Standardeintrag.
Dieser enthält Datum und Urzeit der Erzeugung.
Dieses Datum schreibe ich in die Datenbank.
Bei jedem Neustart lese ich aus dem Script diesen Zeitstempel aus und vergleiche ihn mit dem Datenbankeintrag.
Ist der Script neuer soll automatisch ein Update erfolgen.

Gruß
Peter

hoika 23. Jun 2009 14:30

Re: Update Metadaten SQL
 
Hallo,

das macht man aber etwas anders.
Führe eine DB-Nummer mit.

Die Nummer sagte dir, welche Struktur die Tabelle hat.
Jede neue Sache (Tabelle, Index usw.) bekommt eine neue höhere Nummer.

Du liest die alte aus, und führst dann nur die "Neu"-Änderungen aus,
z.B. über eine TXXScript-Komponente.

Vorteil:
Klappt mit jedem alten DB-Stand.


Heiko

manfred_h 23. Jun 2009 14:44

Re: Update Metadaten SQL
 
Zitat:

Zitat von DeddyH
Müsste dazu aber nicht IBExpert auch beim Kunden installiert sein?

Doch das sollte natürlich installiert sein.
Die Idee von Peter ist dann schon besser.

Da gab es vor einiger Zeit einen Thread diesbezüglich:
http://www.delphipraxis.net/internal...ct.php?t=49715

Shalom
Manfred

hanspeter 23. Jun 2009 20:05

Re: Update Metadaten SQL
 
Zitat:

Zitat von hoika
Hallo,
das macht man aber etwas anders.
Führe eine DB-Nummer mit.
Heiko

Lohnt sich in diesem Fall nicht.
Die Datenbank wird etwa 4 Wochen vor einer Veranstaltung angelegt und 2 Wochen nach der Veranstaltung archiviert.
Eine archivierte Datenbank muss 2 Jahre aufbewahrt werden und wird nur im Ausnahmefall nochmals benötigt.
Oft kommt es vor, das aufgrund von Regeländerungen eine schnelle Änderung wärend der Veranstaltung notwendig ist.
Dann schicke ich das geänderte Script. Alles andere muss automatisch ablaufen.

Bei alten Datenbanken, welche nochmals benötigt werden, habe ich einen anderen Weg gewählt.
Ich gebe die gesamte Datenbank als XML Dateien aus. Diese kann ich dann bei Bedarf in eine Datenbank mit neuer Struktur einlesen.

Gruß
Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz