www.mikrocontroller.net

Forum: PC-Programmierung Datenbank versionieren


Autor: Stinkywinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich suche nach einer Möglichkeit, die Änderungsgeschichte einer 
Access-Datenbank zu erfassen, sprich: Wer hat wann was warum geändert. 
Schön aber nicht unbedingt nötig wäre es, einen alten Stand 
wiederherstellen zu können. Vom Prinzip her stelle ich mir das so vor, 
wie die Versionsverwaltungstools für Sourcecode.

Wahrscheinlich scheiden aber solche Tools wie VSS, CVS oder SVN aus, da 
die Datenbank eine "binäre" Datei ist und derzeit rund 77 MB gross ist.

Autor: Schrumpfschlauch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch den primary key als Surrogat mit der Versionsnummer. Oder 
versionier die binäre Datei mit CVS, das geht auch!

Autor: Stinkywinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, da ich bei Datenbanken ein Newbie bin, verstehe ich unter dem 
ersten Vorschlag nur Bahnhof.

Hingegen funktioniert es tatsächlich mit SVN. Das Repository wird nur 
etwa 4 MB gross, mit 3 unterschiedlichen DB-Versionen eingecheckt.

Danke!

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man von Accessdatenbanken keinen Textdump machen?

Ich hab mal an einem Projekt gearbeitet, da haben wird von der 
PostgresSQL Datenbank die wir benutzten einfach einen SQL-Dump (aber nur 
vom Schema, denn darum ging es uns nur) ins CVS reingehauen.

War noch witzig, weil dadurch, dass wir nen SQL-Dump verwendeten, konnte 
man mit cvs diff auch die Änderungen studieren.

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Änderungshistorie mit der Möglichkeit nachzuvollziehen wer was wann 
geändert hat und die Möglichkeit die Änderung auch wieder rückgängig zu 
machen geht nur mit Datenbankbordmittel.

Wir haben das so gelöst, dass wir an jede Tabelle die ID - des 
Mitarbeiters und den Änderungszeitpunkt angehangen haben. In einem 
Trigger prüfen wir welche Änderungen durchgeführt wurden.

Die Änderungen werden mit Bezug zum Orginalsatz in einer eigenen Tabelle 
gespeichert. Auf diese Weise können wir alle Änderungen auf kritischen 
Tabellen protokollieren und notfalls zurückfahren.

Da unsere Tabellen zum Teil viele Felder haben, haben wir einen kleinen 
Codegenerator, der entsprechenden SQL-Code für die Trigger generiert.

Als Trigger benötigst Du für jede Tabelle einen Before-Insert und einen 
Before-Update Trigger. Im TRigger prüfst Du einfach mit OLD.Feldname <> 
NEW.Feldname den Inhalt. Hat sich etwas verändert, fügst Du die 
Veränderung in die Protokolltabelle ein.

Gruß
Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.