Frage

Mein Bedürfnis ist recht einfach und ich will nicht das Rad neu zu erstellen. Ich mag Skript meiner Datenbank und habe Skripte geschrieben es auf den nächsten dh 001-create-tables.sql, 002-alter-column.sql usw.

von einer Version zu aktualisieren

Was ich will, ist ein einfaches Kommandozeilen-Tool oder MsBuild, die in einer Datenbank sehen, welche Version der Datenbank (mit einigen Tabelle Konvention) aussehen wird und alle Skripte in einem Ordner ausführen, die eine höhere Zahl als die aktuelle haben Datenbankversion. Ich möchte auch, dass das Werkzeug ein Skript rollen zurück, wenn es fehlschlägt / wirft einen Fehler und Stopp an diesem Punkt.

Das ist, was ich möchte, aber ich kümmere mich nicht meine Konventionen zu ändern, obwohl will ich meinen eigenen SQL-Skripte schreiben. Ich mag auch das Werkzeug frei oder Open-Source sein, wie ich nicht zu viel brauchen. Als meine Projekte C # sind, würde ich es vorziehen, das Werkzeug in .Net

gebaut werden
War es hilfreich?

Lösung 7

OK, damit ich nicht wie eine der Optionen tat, fand ich es heraus. Ich fand einige gute Werkzeuge, um die Skripte zu erstellen, aber nichts, was die Version in der Datenbank verfolgen würde, und führen Sie die neuen Skripte. Auf jeden Fall ging ich weiter und rollte mein eigenes Open-Source-Tool, um die Aufgabe zu erledigen. Wenn Sie es verwenden möchten, können Sie herunterladen, wenn von CodePlex seinen Namen KissDB . Ich habe auch eine Blog-Post darüber in meinem Blog warf blog.RunXc

Andere Tipps

Haben Sie sich öffnen DBDiff noch ? Es kann ein guter Anfang sein.

Wenn Sie Ihre Meinung über Open-Source ändern, Red Gate SQL Vergleichen ist der Weg, IMO zu gehen.

Es ist ein ziemlich interessantes Projekt namens SQLRunner auf Source - es ist C #, es .NET, es ist Vergangenheit "pre-alpha" :-)

Ich habe es selbst nicht benutzt, aber immer noch -. Sieht ganz gut aus, IMHO

Marc

Dies ist ein schwieriges Problem, schlicht und einfach. Die Werkzeuge in anderen Antworten erwähnt kann definitiv helfen, aber du bist immer noch eine Menge selbst zu tun.

Ich habe tatsächlich einen Tisch in meinem Schema, dass speichert eine ID für jede Änderung Skript (das entspricht die Fallnummer in meiner Ausgabe / Bug-Tracking-System). Am Ende jeder Änderung Skript einfügen ich die ID in dieser Tabelle. Ich habe ein separates Skript, das prüft, um zu sehen, was auf einer bestimmten Instanz der Datenbank durchgeführt worden ist. Es wäre möglich zu automatisieren jeder der das Ausführen von Skripts, die noch nicht ausgeführt haben, aber Ich mag Änderungsskripts manuell, falls etwas schief geht laufen.

kann Rollbacks fast unmöglich sein, zumal viele Schemaänderungen irgendeine Art von Datenmigration erforderlich. Ich habe festgestellt, dass Best Practice mit irgendwelchen Änderungen am Schema ist sie abwärtskompatibel zu machen. Nie eine Spalte oder eine Tabelle (zumindest zunächst) umbenennen. Nur Dinge hinzufügen und machen alle neuen Nullable-fügt. Ein Rollback-Skript entfernt einfach die neuen Sachen, wenn man etwas erkennen, ist nicht ganz richtig. Natürlich erhalten Sie mit alten, nicht verwendeten Spalten und Tabellen, so dass Sie ein zweites Skript schreiben, das nach dem aktuellen Release laufen wird als stabil angesehen wird, die von den alten Sachen entledigte.

Ich möchte Sie selbst alle Skripte schreiben Sie die Vorteile der nehmen SQL Server 2005 tablediff Dienstprogramm , dass Sie ein hohes Maß an Flexibilität geben. Einige Anwendungsbeispiele werden können finden hier

Wenn Sie alle Ihre Skripte für eine bestimmte Version in einem Ordner haben, können Sie dies als eine Batch-Datei ausführen, wenn Sie es in diesem Ordner ablegen:

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

Sorry, ich kann mich nicht erinnern, wo ich diese bekam aus oder ich würde Kredit geben.

Wir haben unsere Entwickler die Datenbank Change Scripts in Subversion überprüfen. Alle Skripte sind wiederholbar, so dass Sie sie mehrfach ohne Fehler ausgeführt werden kann. Wir verbinden auch die Änderung Skripte Ausgangspositionen oder Bug-IDs, so dass wir eine Änderung Satz zurückhalten, wenn nötig. Wir haben dann einen automatisierten Build-Prozess, dass Kicks aus einer einzigen SQL-Skriptdatei mit allen Änderungen in geeigneter Weise sortierten. Diese einzelne Datei wird dann verwendet, um die Änderungen zu dem Test, QA und Produktionsumgebungen zu fördern. Wir denken, dies ist der beste Ansatz mit Enterprise-Entwickler. Weitere Informationen dazu, wie wir es tun HIER Ihr Feedback geschätzt würde.

Mit Liquibase. Es ist Java though.

Ja, Sie können Ihre Migrationsskripts in der SQL-Variante Ihrer Wahl schreiben.

Es ist gut getestet und von vielen Menschen genutzt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top