617 Stimmen

Verwenden Sie die Versionskontrolle für Ihre Datenbankelemente?

Ich habe das Gefühl, dass mein Geschäft eine Lücke hat, weil wir keinen soliden Prozess für die Versionierung unserer Datenbankschemaänderungen haben. Wir machen viele Backups, so dass wir mehr oder weniger abgesichert sind, aber es ist eine schlechte Praxis, sich auf diese Weise auf die letzte Verteidigungslinie zu verlassen.

Überraschenderweise scheint dies ein roter Faden zu sein. Viele Geschäfte, mit denen ich gesprochen habe, ignorieren dieses Problem, weil sich ihre Datenbanken nicht oft ändern und sie im Grunde nur versuchen, peinlich genau zu sein.

Aber ich weiß, wie die Geschichte ausgeht. Es ist nur eine Frage der Zeit, bis sich die Dinge einfach falsch anordnen und etwas verloren geht.

Gibt es hierfür bewährte Verfahren? Welche Strategien haben sich für Sie bewährt?

20voto

Stu Thompson Punkte 37628

Ja. Code ist Code. Meine Faustregel lautet, dass ich Folgendes tun muss in der Lage sein, die Anwendung von Grund auf zu erstellen und einzusetzen ohne einen Blick auf eine Entwicklungs- oder Produktionsmaschine zu werfen.

14voto

Sara Chipps Punkte 9190

Die beste Praxis, die ich gesehen habe, ist die Erstellung eines Build-Skripts, um die Datenbank auf einem Staging-Server zu verwerfen und neu zu erstellen. Jeder Iteration wurde ein Ordner für Datenbankänderungen zugewiesen, alle Änderungen wurden mit "Drop... Erstellen" versehen. Auf diese Weise können Sie jederzeit zu einer früheren Version zurückkehren, indem Sie das Build-Skript auf den Ordner verweisen, in dem Sie die Version speichern möchten.

Ich glaube, das wurde mit NaNt/CruiseControl gemacht.

11voto

Pete Punkte 1505

JA, ich denke, es ist wichtig, die Datenbank zu versionieren. Nicht die Daten, aber auf jeden Fall das Schema.

In Ruby On Rails wird dies durch das Framework mit "Migrationen" gehandhabt. Jedes Mal, wenn Sie die Datenbank ändern, erstellen Sie ein Skript, das die Änderungen übernimmt und in die Versionskontrolle eincheckt.

Meinem Geschäft gefiel diese Idee so gut, dass wir die Funktionalität in unser Java-basiertes Build integriert haben Verwendung von Shell-Skripten und Ant. Wir haben den Prozess in unsere Einsatzroutine integriert. Es wäre ziemlich einfach, Skripte zu schreiben, um dasselbe in anderen Frameworks zu tun, die die DB-Versionierung nicht sofort unterstützen.

9voto

Tom A Punkte 568

Die neuen Datenbankprojekte in Visual Studio bieten Versionskontrolle und Änderungsskripte.

Es gibt ein nettes Tool, das Datenbanken vergleicht und ein Skript erstellen kann, das das Schema der einen in das der anderen konvertiert oder die Daten in der einen Datenbank aktualisiert, damit sie mit der anderen übereinstimmen.

Das DB-Schema wird "geschreddert", um viele, viele kleine .sql-Dateien zu erstellen, eine pro DDL-Befehl, der die DB beschreibt.

+tom


Zusätzliche Informationen 2008-11-30

Ich verwende es seit einem Jahr als Entwickler und finde es wirklich gut. Es macht es einfach, meine Entwicklungsarbeit mit der Produktion zu vergleichen und ein Skript zu erstellen, das ich für die Veröffentlichung verwenden kann. Ich weiß nicht, ob es an Funktionen mangelt, die DBAs für Projekte vom "Unternehmenstyp" benötigen.

Da das Schema in SQL-Dateien "geschreddert" wird, funktioniert die Versionskontrolle problemlos.

Eine Schwierigkeit besteht darin, dass man eine andere Einstellung haben muss, wenn man ein DB-Projekt verwendet. Das Tool verfügt über ein "DB-Projekt" in VS, das nur die SQL und eine automatisch generierte lokale Datenbank enthält, die das Schema und einige andere Verwaltungsdaten enthält - aber keine Ihrer Anwendungsdaten und Ihre lokale Entwicklungsdatenbank, die Sie für die Entwicklung von Anwendungsdaten verwenden. Man ist sich der automatisch generierten Datenbank selten bewusst, aber man muss wissen, dass sie da ist, damit man sie in Ruhe lassen kann :). Diese spezielle Datenbank ist klar erkennbar, weil sie eine Guid in ihrem Namen hat,

Das VS DB-Projekt leistet gute Arbeit bei der Integration von DB-Änderungen, die andere Teammitglieder in Ihr lokales Projekt bzw. Ihre assoziierte DB vorgenommen haben, aber Sie müssen den zusätzlichen Schritt unternehmen, um das Projektschema mit Ihrem lokalen Dev-DB-Schema zu vergleichen und die Änderungen anzuwenden. Das ist sinnvoll, erscheint aber anfangs etwas umständlich.

DB-Projekte sind ein sehr leistungsfähiges Instrument. Sie erzeugen nicht nur Skripte, sondern können sie auch sofort anwenden. Achten Sie darauf, dass Sie damit nicht Ihre Produktions-DB zerstören ;)

Die VS DB-Projekte gefallen mir sehr gut und ich werde dieses Tool in Zukunft für alle meine DB-Projekte verwenden.

+tom

8voto

AliceF Punkte 111

Die Anforderung an die Entwicklungsteams, ein SQL-Datenbank-Source-Control-Managementsystem zu verwenden, ist nicht das Wundermittel, das Probleme verhindern wird. Die Datenbank-Source-Control allein verursacht zusätzlichen Aufwand, da die Entwickler die an einem Objekt vorgenommenen Änderungen in einem separaten SQL-Skript speichern, den Client des Source-Control-Systems öffnen, die SQL-Skriptdatei mithilfe des Clients einchecken und dann die Änderungen auf die Live-Datenbank anwenden müssen.

Ich kann die Verwendung des SSMS-Add-Ins namens ApexSQL-Quellcodekontrolle . Es ermöglicht Entwicklern die einfache Zuordnung von Datenbankobjekten zum Versionskontrollsystem über den Assistenten direkt aus SSMS. Das Add-In bietet Unterstützung für TFS, Git, Subversion und andere SC-Systeme. Es bietet auch Unterstützung für die Quellcodekontrolle statischer Daten.

Nachdem Sie ApexSQL Source Control heruntergeladen und installiert haben, klicken Sie einfach mit der rechten Maustaste auf die Datenbank, die Sie versionskontrollieren möchten, und navigieren Sie zum Untermenü ApexSQL Source Control in SSMS. Klicken Sie auf die Option Link database to source control, wählen Sie das Quellkontrollsystem und das Entwicklungsmodell aus. Danach müssen Sie die Anmeldeinformationen und die Repository-Zeichenfolge für das von Ihnen gewählte Versionskontrollsystem angeben.

Weitere Informationen finden Sie in diesem Artikel: http://solutioncenter.apexsql.com/sql-source-control-reduce-database-development-time/

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