Gibt es ein Versionskontrollsystem für die Datenbankstruktur ändert?

stimmen
104

Ich laufe oft in das folgende Problem.

Ich arbeite an einigen Änderungen an ein Projekt, die neuen Tabellen oder Spalten in der Datenbank benötigen. Ich mache die Datenbankänderungen und meine Arbeit fortzusetzen. Normalerweise Ich erinnere mich an die Änderungen zu notieren, so dass sie auf dem Live-System repliziert werden können. Allerdings erinnere ich mich nicht immer das, was ich habe mich verändert und ich weiß nicht immer daran denken, es aufzuschreiben.

Also mache ich eine Push - to - Live - System und einen großen, offensichtlichen Fehler , dass es keine NewColumnX, igitt.

Unabhängig von der Tatsache, dass dies nicht die beste Praxis für diese Situation sein kann, ist es ein Versionskontrollsystem für Datenbanken? Ich kümmere mich nicht um die spezifische Datenbank-Technologie. Ich will nur wissen, ob ein solches vorhanden ist. Wenn es passiert, mit MS SQL Server zu arbeiten, dann groß.

Veröffentlicht am 02/08/2008 um 02:52
quelle vom benutzer
In anderen Sprachen...                            


22 antworten

stimmen
56

In Ruby on Rails, gibt es ein Konzept einer Migration - eine schnelle Skript , um die Datenbank zu ändern.

Sie erzeugen eine Migrationsdatei, die Regeln hat die DB-Version (wie das Hinzufügen einer Spalte) und Regeln zu erhöhen, um die Version (wie das Entfernen einer Spalte) herabzustufen. Jede Migration ist nummeriert, und eine Tabelle hält den Überblick über Ihre aktuelle db-Version.

Um wandern nach oben , führen Sie einen Befehl namens „db: Migration“ , die auf Ihrer Version sieht und trifft die benötigten Skripte. Sie können auf eine ähnliche Art und Weise wandern nach unten.

Die Migrations Skripte selbst ist in einem Versionskontrollsystem gehalten - wenn Sie die Datenbank, die Sie in einem neuen Skript überprüfen zu ändern, und jeder Entwickler kann es wendet ihre lokalen db auf die neueste Version zu bringen.

Beantwortet am 02/08/2008 um 07:23
quelle vom benutzer

stimmen
29

Ich bin ein wenig der alten Schule, dass ich Quelldateien verwenden, um die Datenbank zu erstellen. Es gibt tatsächlich zwei Dateien - Projekt-database.sql und projekt updates.sql - die erste für das Schema und persistente Daten, und die zweite für Modifikationen. Natürlich sind beide unter Quellcodeverwaltung.

Wenn die Datenbankänderungen, ich zuerst das Hauptschema in Projekt-database.sql aktualisieren, kopieren Sie die relevanten Informationen zum Projekt-updates.sql zum Beispiel ALTER TABLE-Anweisungen. Ich kann dann die Updates für die bis gut gemacht Entwicklungsdatenbank, test, Iterierte gelten. Überprüfen Sie dann in Dateien, Test erneut, und die Produktion anzuwenden.

Außerdem habe ich in der Regel eine Tabelle in der db - Config - wie zum Beispiel:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT IGNORE  INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Dann füge ich folgendes zum Update-Abschnitt:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

Die db_versionnur wird geändert , wenn die Datenbank neu erstellt wird, und das db_revisiongibt mir einen Hinweis , wie weit die db von der Basislinie ist.

Ich konnte den Updates in einem eigenen Datei halten, aber ich wählte sie alle zusammen zerdrücken und schneiden Sie verwenden & Paste relevante Abschnitte zu extrahieren. Ein bisschen mehr Hausarbeit ist in Ordnung, das heißt, entfernen ‚:‘ von $ Revision 1.1 $ sie einzufrieren.

Beantwortet am 26/09/2008 um 21:29
quelle vom benutzer

stimmen
11

Redgate hat ein Produkt namens SQL Source Control . Die nahtlose Integration mit TFS, SVN, SourceGear Vault Vault Pro, Mercurial, Perforce und Git.

Beantwortet am 08/07/2011 um 15:51
quelle vom benutzer

stimmen
11

Mybatis (früher iBatis) ein Schema Migration , Werkzeug für den Einsatz auf der Kommandozeile. Es ist zwar in Java geschrieben wird, kann mit jedem Projekt verwendet werden.

Um eine gute Datenbank Change-Management-Praxis zu erreichen, müssen wir ein paar wichtigen Ziele identifizieren. So sucht das Mybatis Schema Migration System (oder Mybatis Migrations kurz) an:

  • Arbeiten Sie mit einer beliebigen Datenbank, neue oder bestehende
  • Hebelwirkung die Quelle Steuersystem (zB Subversion)
  • Aktivieren gleichzeitige Entwickler oder Teams, selbständig zu arbeiten
  • Lassen Sie Konflikte sehr sichtbar und leicht zu handhabe
  • Zulassen für Vorwärts- und Rückwärtsmigration (entwickeln, devolve respectively)
  • Machen Sie den aktuellen Status der Datenbank leicht zugänglich und verständlich
  • Aktivieren Migrationen trotz Zugriffsrechte oder Bürokratie
  • Arbeiten Sie mit jeder Methode
  • Ermutigt die gute, konsistente Praktiken
Beantwortet am 10/07/2010 um 22:56
quelle vom benutzer

stimmen
10

Ich frage mich , dass niemand die Open - Source - Tool erwähnt Liquibase , die Java - basierte und sollte für fast jede Datenbank arbeiten , die jdbc unterstützt. Im Vergleich zu Schienen verwendet es xml statt Ruby der Schemaänderungen durchzuführen. Obwohl ich das sehr cool Vorteil xml xml für domänenspezifische Sprachen nicht mag , ist , dass liquibase weiß , wie ein Rollback bestimmte Operationen wie

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

Sie brauchen also nicht das eigene zu handhaben

Reine SQL-Anweisungen oder Datenimporte werden ebenfalls unterstützt.

Beantwortet am 10/07/2010 um 22:26
quelle vom benutzer

stimmen
10

Ich empfehle SQL Delta . Ich benutze es nur die diff - Skripte zu generieren , wenn ich meine Funktion fertig bin Codierung und überprüfen diese Skripte in meinem Source - Control - Tool (Mercurial :))

Sie haben beide einen SQL-Server und Oracle-Version.

Beantwortet am 28/05/2009 um 03:12
quelle vom benutzer

stimmen
9

Die meisten Datenbank-Engines sollten Sie Ihre Datenbank in eine Datei unterstützen Dumping. Ich weiß, MySQL tut, sowieso. Dies wird nur eine Textdatei sein, so könnte man das zu Subversion einreichen, oder was auch immer Sie verwenden. Es wäre einfach zu ein Diff auf die Dateien ausführen.

Beantwortet am 02/08/2008 um 02:56
quelle vom benutzer

stimmen
8

Wenn Sie SQL Server verwenden würde es schwierig sein, Daten Geck zu schlagen (auch bekannt als die Database Edition von Visual Studio). Sobald Sie den Dreh raus zu bekommen, tun ein Schema zwischen Quelle gesteuert Version der Datenbank und der Version in der Produktion zu vergleichen, ist ein Kinderspiel. Und mit einem Klick können Sie Ihre diff DDL generieren.

Es gibt ein Lehr - Video auf MSDN , die sehr hilfreich ist.

Ich weiß, über DBMS_METADATA und Kröten, aber wenn jemand mit einem Data-Geck für Oracle kommen könnte dann wäre das Leben wirklich süß.

Beantwortet am 10/09/2008 um 20:49
quelle vom benutzer

stimmen
7

Werfen Sie einen Blick auf die Oracle-Paket DBMS_METADATA.

Insbesondere sind die folgenden Verfahren besonders geeignet:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Sobald Sie sind vertraut mit, wie sie funktionieren (ziemlich selbsterklärend) können Sie ein einfaches Skript schreiben, die Ergebnisse dieser Methoden in Textdateien zu entleeren, die unter Quellcodeverwaltung gestellt werden können. Viel Glück!

Nicht sicher, ob es etwas, das einfach für MSSQL ist.

Beantwortet am 01/09/2008 um 21:57
quelle vom benutzer

stimmen
7

Haben Sie Ihre ersten Tabellen Aussagen in Version Controller erstellen, fügen Sie dann Tabelle Anweisungen ändern, aber niemals Dateien bearbeiten, nur mehr ändern Dateien idealerweise sequentiell genannt, oder auch als „Wechselsatz“, so dass Sie alle Änderungen für einen bestimmten Einsatz finden können.

Der widerstandsfähigsten Teil, dass ich sehen kann, verfolgt Abhängigkeiten, zum Beispiel für eine bestimmte B-Zurodnungstabelle muß möglicherweise vor Tabelle A aktualisiert werden

Beantwortet am 31/08/2008 um 12:25
quelle vom benutzer

stimmen
7

Für Oracle, verwende ich Kröte , die ein Schema einer Anzahl von diskreten Dump - Dateien können (zB eine Datei pro Tabelle). Ich habe einige Skripte , die diese Sammlung in Perforce verwalten, aber ich denke , es sollte in fast jedem Versionskontrollsystem leicht machbar.

Beantwortet am 02/08/2008 um 07:05
quelle vom benutzer

stimmen
6

PLSQL Entwickler, ein Werkzeug aus allen Arround Automations, hat ein Plugin für Repositorys, die OK (aber nicht groß) mit Visual Source Safe funktioniert.

Aus dem Netz:

Die Version Control Plug-In bietet eine enge Integration zwischen dem PL / SQL Developer IDE >> und jedem Versionskontrollsystem, das dem Microsoft SCC Interface Specification unterstützt. >> Dazu gehören beliebtesten Version Control Systeme wie Microsoft Visual Source >> Merant PVCS und MKS Source Integrity.

http://www.allroundautomations.com/plsvcs.html

Beantwortet am 17/09/2008 um 16:50
quelle vom benutzer

stimmen
6

Ich habe diese aus getan und über Jahre - Verwaltung (oder versuchen, zu verwalten) Schemaversionen. Die besten Ansätze hängen von den Tools, die Sie haben. Wenn Sie das Quest Software-Tool „Schema Manager“ bekommen werden Sie in guter Form sein. Oracle hat sein eigenes, minderwertiges Werkzeug, das auch „Schema Manager“ (verwirrend viel?) Genannt wird, das ich nicht empfehlen.

Ohne ein automatisiertes Tool (siehe weitere Kommentare hier über Data Geck), dann werden Sie direkt Skripte und DDL-Dateien mit werden. Wählen Sie einen Ansatz, zu dokumentieren, und folgen Sie es konsequent. Ich mag es, die Möglichkeit, die Datenbank zu einem bestimmten Zeitpunkt neu zu erstellen, so dass ich lieber einen vollständigen DDL Export der gesamten Datenbank haben (wenn ich das DBA) oder des Entwicklers Schemas (wenn ich in Produkt bin -Entwicklung-Modus).

Beantwortet am 15/09/2008 um 16:01
quelle vom benutzer

stimmen
6

Ich schreibe meinen db Release-Skripte parallel zu Programmierung und halte das Release-Skripte in einem projektspezifischen Abschnitt in SS. Wenn ich eine Änderung am Code vornehmen, die eine db Änderung erfordert, dann aktualisiere ich die Freigabe Skript zur gleichen Zeit. Vor der Freigabe, betreibe ich das Release-Skript auf einem sauberen dev db (kopiert Struktur weise aus der Produktion) und darauf meine Endprüfung tun.

Beantwortet am 30/08/2008 um 19:58
quelle vom benutzer

stimmen
5

ER Studio können Sie Ihre Datenbank - Schema in das Werkzeug umkehren und Sie können es dann vergleichen Datenbanken zu leben.

Beispiel: Reverse Ihre Entwicklungsschema in ER Studio - vergleichen Sie es mit der Produktion und es wird alle Unterschiede aufzulisten. Es kann Skript die Änderungen oder sie durchsetzen automatisch.

Sobald Sie ein Schema in IHM Studio haben, können Sie entweder die Erstellung Skript speichern oder als proprietäres binären speichern und es in der Versionskontrolle speichern. Wenn Sie jemals wieder in eine ältere Version des Programms gehen wollen, überprüfen Sie es einfach aus und schieben Sie es auf Ihre db-Plattform.

Beantwortet am 17/09/2008 um 19:04
quelle vom benutzer

stimmen
5

Es gibt eine PHP5 „Datenbank - Migration Framework“ genannt Ruckusing. Ich habe es nicht benutzt , aber die Beispiele zeigen die Idee, wenn Sie die Sprache verwenden , um die Datenbank wie und erstellen bei Bedarf nur Quelldateien verfolgen müssen.

Beantwortet am 02/08/2008 um 08:48
quelle vom benutzer

stimmen
3

Sie können mit Microsoft SQL Server - Datentool in Visual Studio - Skripte für Datenbankobjekte als Teil eines SQL Server - Projektes zu generieren. Anschließend können Sie die Skripte zur Quellcodeverwaltung mit der Integration der Quellcodeverwaltung hinzufügen , die in Visual Studio integriert ist. Auch SQL Server - Projekte können Sie die Datenbankobjekte mit Hilfe eines Compilers überprüfen und generieren Bereitstellungsskripts eine vorhandene Datenbank zu aktualisieren oder einen neuen erstellen.

Beantwortet am 22/12/2014 um 11:58
quelle vom benutzer

stimmen
2

Schemavergleich für Oracle ist ein Tool, das speziell zur Migration Änderungen unserer Oracle-Datenbank zu einem anderen entwickelt. Bitte besuchen Sie die unten stehende URL für den Download-Link, wo Sie die Software für eine voll funktionsfähige Testversion nutzen können.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Beantwortet am 10/01/2010 um 03:59
quelle vom benutzer

stimmen
2

Wir haben verwendet MS Team System Database Edition mit recht gutem Erfolg. Die nahtlose Integration mit TFS Versionskontrolle und Visual Studio mehr oder weniger nahtlos und ermöglicht es uns gelingt gespeichert Procs, Ansichten, etc. leicht. Konfliktlösung kann ein Schmerz, aber Version der Geschichte ist abgeschlossen , wenn es fertig ist. Danach Migrationen QA und Produktion ist extrem einfach.

Es ist fair zu sagen, dass es eine Version 1.0 Produkt ist, aber, und ist nicht ohne ein paar Fragen.

Beantwortet am 26/09/2008 um 19:12
quelle vom benutzer

stimmen
1

Ich würde einer von zwei Ansätzen empfehlen. Erstens investieren in Power von Sybase. Enterprise Edition. Es ermöglicht Ihnen , Physische Datenmodelle, und eine ganze Menge mehr zu entwerfen. Aber es kommt mit einem Repository , das Sie in Ihren Modellen überprüfen kann. Jeder neue Check - in kann eine neue Version sein, ist es eine Version zu einer anderen Version vergleichen und auch zu dem, was in Ihrer Datenbank zu dieser Zeit. Es wird dann eine Liste aller Differenz präsentieren und fragen , welche ... migriert werden soll , und dann baut es das Skript , es zu tun. Es ist nicht billig , aber es ist ein Schnäppchen für den doppelten Preis und es ist ROI etwa 6 Monate.

Die andere Idee ist, auf DDL Revision einzuschalten (funktioniert in Oracle). Dadurch werden Sie machen eine Tabelle mit jeder Änderung erstellen. Wenn Sie die Änderungen aus dem Zeitstempel abfragen letzten Sie Ihre Datenbankänderungen bewegen jetzt prod, werden Sie eine geordnete Liste von allem, was Sie getan haben. Einige where-Klauseln Nullsummen zu beseitigen ändert wie Tabelle foo erstellen; durch drop table foo gefolgt; und man kann leicht einen Mod-Skript bauen. Warum in einem Wiki die Änderungen halten, das ist die doppelte Arbeit. Lassen Sie die Datenbank sie für Sie verfolgen.

Beantwortet am 26/09/2008 um 18:53
quelle vom benutzer

stimmen
1

Zwei Buchempfehlung: "Refactoring-Datenbanken" von Ambler und Sadalage und "Agile Database Techniques" von Ambler.

Jemand erwähnte Rails Migrationen. Ich glaube , sie arbeiten toll, auch außerhalb von Rails - Anwendungen. Ich habe sie auf einer ASP - Anwendung mit SQL Server , die wir die Umstellung auf Rails im Begriff waren. Sie überprüfen die Migrationsskripte selbst in die VCS. Hier ist ein Beitrag von Pragmatische Dave Thomas zu dem Thema.

Beantwortet am 22/09/2008 um 19:17
quelle vom benutzer

stimmen
1

In Abwesenheit eines VCS für Tabellenänderungen habe ich sie in einem Wiki wurde protokolliert. Zumindest dann kann ich sehen, wann und warum es geändert wurde. Es ist bei weitem nicht perfekt, wie nicht jeder es tut, und wir mehrere Produktvarianten im Einsatz haben, aber besser als nichts.

Beantwortet am 01/09/2008 um 08:29
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more