Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Datenbank gleich halten bei sich und Endanwendern

  Alt 20. Mär 2005, 10:11
Hallo etom,

wir verkaufen eine WW-Verwaltung inkl. CRM, welches auch auf einer sehr grossen Datenbank basiert. Wir arbeiten mit 3 Versionen (Release, Build, New Version), von welchen 2 bei Kunden installiert sind (Release und Build). Zwischen den einzelnen Versionen bestehen nicht allzuviele Unterschiede, die NV ist aber sehr viel weiterentwickelt. Deshalb haben wir ein Programm namens GenDB entwickelt. Dieses Programm wird immer mit den aktuellsten DB-Schemen ausgeliefert (fuer die jeweilige Version). Das Programm geht nun das Schema fuer die Datenbank durch, und sucht sich die entsprechende Tabelle raus. Existiert die Tabelle nicht, so wird sie erstellt. Existiert sie, so werden die Felder im Script und in der Tabelle verglichen. Fehlt ein Feld oder ist es zu kurz (z.B. bei Varchar-Feldern), so wird das Feld hinzugefuegt/geaendert. Ist ein Feld in der DB, aber nicht im Script so wird eine Meldung in das Log geschrieben, da das Programm grundsaetzlich keine Daten loescht. Aus diesem Grund werden Tabellen die nicht mehr im Script sind auch nicht geloescht.
Dies funktioniert in ca. 90% aller Faelle. Falls Primaerschluessel geaendert werden oder Tabellen geloescht werden muessen, so muessen wir einfach eine Funktion mit in die DLL reinpacken, die die entsprechenden Aenderungen durchfuehrt (also Tabelle erstellen, Daten rueberschieben, alte Tabelle loeschen, anhand von neuem Schema erstellen, dann Daten in die neue Tabelle pumpen und temporaere Tabelle loeschen). Wie genau dies funktioniert kann ich dir auch noch nicht sagen, ich hatte mit dem Programm noch nicht allzuviel Kontakt, da ich erst seit 2 Monaten dort arbeite. Ich hoffe du kannst aber ein paar Ideen verwenden.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat