341 Stimmen

Wie führt man Versionskontrolle für eine SQL Server-Datenbank durch?

Ich möchte meine Datenbanken unter Versionskontrolle halten.

Ich möchte immer zumindest einige Daten darin haben (wie alumb erwähnt: Benutzertypen und Administratoren). Oft möchte ich auch eine große Sammlung generierter Testdaten für Leistungsmessungen haben.

Wie kann ich Versionskontrolle auf meine Datenbank anwenden?

5voto

Wir haben gerade angefangen, Team Foundation Server zu verwenden. Wenn Ihre Datenbank mittelgroß ist, hat Visual Studio einige schöne Projektintegrationen mit integriertem Vergleich, Datenvergleich, Datenbankrefaktorisierungswerkzeugen, Datenbanktestframework und sogar Tools zur Datengenerierung.

Aber dieses Modell passt nicht sehr gut zu sehr großen oder Drittanbieter-Datenbanken (die Objekte verschlüsseln). Also haben wir nur unsere angepassten Objekte gespeichert. Visual Studio / Team Foundation Server funktioniert sehr gut dafür.

TFS Database Chef-Architekt Blog

MS TFS Seite

3voto

Liron Levi Punkte 1119

In meiner Erfahrung ist die Lösung zweigleisig:

  1. Sie müssen Änderungen an der Entwicklungsdatenbank handhaben, die von mehreren Entwicklern während der Entwicklung durchgeführt werden.

  2. Sie müssen Datenbank-Upgrades auf den Kundenseiten handhaben.

Um #1 zu handhaben, benötigen Sie ein starkes Datenbank-Diff/Merge-Tool. Das beste Tool sollte automatische Merges so weit wie möglich durchführen können, während es Ihnen ermöglicht, ungelöste Konflikte manuell zu lösen.

Das ideale Tool sollte Merge-Operationen mithilfe eines 3-Wege-Merge-Algorithmus durchführen, der die Änderungen berücksichtigt, die in der THEIRS-Datenbank und der MINE-Datenbank im Vergleich zur BASE-Datenbank vorgenommen wurden.

Ich habe ein kommerzielles Tool entwickelt, das manuelle Merge-Unterstützung für SQLite-Datenbanken bietet, und ich füge derzeit Unterstützung für den 3-Wege-Merge-Algorithmus für SQLite hinzu. Schauen Sie es sich unter http://www.sqlitecompare.com an.

Um #2 zu handhaben, benötigen Sie ein Upgrade-Framework.

Die grundlegende Idee besteht darin, ein automatisches Upgrade-Framework zu entwickeln, das weiß, wie man von einem vorhandenen SQL-Schema auf das neuere SQL-Schema aktualisiert und einen Upgrade-Pfad für jede vorhandene DB-Installation erstellen kann.

Schauen Sie sich meinen Artikel zum Thema unter http://www.codeproject.com/KB/database/sqlite_upgrade.aspx an, um eine allgemeine Vorstellung davon zu bekommen, worüber ich spreche.

Viel Glück

Liron Levi

3voto

Kuberchaun Punkte 27481

Schauen Sie sich DBGhost unter http://www.innovartis.co.uk/ an. Ich habe es jetzt seit 2 Jahren in automatisierter Weise verwendet und es funktioniert großartig. Es ermöglicht unseren DB-Builds, ähnlich wie ein Java- oder C-Build passiert, außer für die Datenbank. Du weißt, was ich meine.

2voto

Endi Zhupani Punkte 736

Ich würde vorschlagen, Vergleichswerkzeuge zu verwenden, um ein Versionskontrollsystem für Ihre Datenbank zu verbessern. Zwei gute Alternativen sind xSQL Schema Vergleich und xSQL Datenvergleich.

Falls Ihr Ziel nur darin besteht, das Schema der Datenbank unter Versionskontrolle zu haben, können Sie einfach xSQL Schema Vergleich verwenden, um xSQL Snapshots des Schemas zu generieren und diese Dateien in Ihre Versionskontrolle aufzunehmen. Dann können Sie zur Rücknahme oder Aktualisierung zu einer bestimmten Version einfach die aktuelle Version der Datenbank mit dem Snapshot für die Zielversion vergleichen.

Außerdem, wenn Sie auch die Daten unter Versionskontrolle haben möchten, können Sie xSQL Datenvergleich verwenden, um Änderungsskripte für Ihre Datenbank zu generieren und die .sql Dateien in Ihre Versionskontrolle aufzunehmen. Sie könnten dann diese Skripte ausführen, um zur gewünschten Version zurückzukehren oder zu aktualisieren. Beachten Sie, dass für die "zurückkehren"-Funktionalität müssen Sie Änderungsskripte generieren, die, wenn sie ausgeführt werden, Version 3 genauso machen wie Version 2 und für die "aktualisieren"-Funktionalität müssen Sie Änderungsskripte generieren, die das Gegenteil tun.

Zu guter Letzt, mit einigen grundlegenden Programmierfähigkeiten können Sie den gesamten Prozess automatisieren, indem Sie die Befehlszeilenversionen von xSQL Schema Vergleich und xSQL Datenvergleich verwenden

Haftungsausschluss: Ich bin mit xSQL verbunden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X