2 Stimmen

Umgang mit Datenbankänderungen zwischen Versionszweigen/Rollbacks in ASP.NET

Ich habe ein ASP.NET-Projekt. Natürlich ändert sich durch verschiedene Veröffentlichungen und Entwicklungszweige das Datenbankschema.

Welche Möglichkeiten gibt es, um die Schemaänderungen auf saubere Weise freundlich zu handhaben, so dass ich problemlos zwischen Entwicklungszweigen wechseln kann?

Ich verwende SQL Server 2005, aber allgemeine Techniken funktionieren wahrscheinlich.

2voto

Saul Dolgin Punkte 8324

Ein guter Weg, um Änderungen am Schema in mehreren Zweigen eines Entwicklungsprojekts nachverfolgen zu können, wäre, einem Datenbank-Refactoring-Prozess zu folgen. Dieser Prozess beinhaltet unter anderem die Verwendung von Delta- und Migrationscripts, um Schema-Änderungen in jeder Umgebung (oder in Ihrem Fall in jedem Zweig) anzuwenden. Die Einrichtung könnte ungefähr so aussehen:

main
  src <-- ASP.NET Projektquelle
  db <-- Datenbank-Erstellscripts
  delta <-- Datenbank-Änderungs-Scripts (SQL Delta-Dateien)

branch
  src
  db <-- hat normalerweise die gleichen Inhalte wie die Kopie im Hauptzweig
  delta <-- nur die für diesen Zweig notwendigen Änderungen

Jedes Mal, wenn Sie das Datenbankschema für einen bestimmten Zweig ändern müssen, erstellen Sie ein SQL Delta-Script, das die Änderung anwendet. Um es einfacher zu machen, würde ich vorschlagen, jedem Script-File das Erstellungsdatum und die Uhrzeit hinzuzufügen, um sie in Reihenfolge zu halten. Beispiel:

201102231435_addcolumn.sql
201102231447_addconstraint.sql
201103010845_anotherchange.sql

Fügen Sie die Delta-Dateien dem Quellcode in dem Zweig hinzu, in dem die Schema-Änderung vorgenommen werden muss. Am Ende sollte jeder Zweig genau das enthalten, was notwendig ist, um die entsprechende Datenbank zu ändern. Einige Details müssen möglicherweise je nach Ihrer Situation angepasst werden, abhängig von Dingen wie Ihrem Branching-Schema und ob Ihre Datenbank während Ihres Freigabeprozesses erhalten bleibt (im Gegensatz zu neu erstellt wird).

Zuletzt, um diese Konzepte einfach zu halten, würde ich empfehlen, ein Tool zur Verwaltung des Prozesses zu verwenden. Meine Empfehlung ist, sich DBDeploy / DBDeploy.NET anzusehen. Ich benutze es seit Jahren auf all meinen Projekten und bin sehr zufrieden damit.

0voto

HLGEM Punkte 91543

Wir legen unsere Schema-Änderungen in der Quellcodeverwaltung an derselben Stelle ab, an der sich der restliche Code befindet, der für diese Version bereitgestellt wird.

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