Forum: PC-Programmierung Datenbank versionieren


von Stinkywinky (Gast)


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.

von Schrumpfschlauch (Gast)


Lesenswert?

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

von Stinkywinky (Gast)


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!

von Bartli (Gast)


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.

von Frank L. (franklink)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.