Was ist eine einfache Möglichkeit zu implementierende Datenbankänderungen mithilfe von SQL Server?

StackOverflow https://stackoverflow.com/questions/1948220

Frage

Das Software-System arbeitet ich an einem medizinisches Billing-System, große Mengen von Daten und Datentabellen und gespeicherte Prozeduren.

Ich habe den Artikel " 12 Schritte zum besseren Code " und in der Joel Test # 2 Zustände: können Sie einen Build in einem Schritt

?

Nun ich habe mich gefragt, bedeutet das Deployment Build (so dass ein Kunde ihren Einsatz aktualisieren).

Nun ist die wichtigste Frage, die ich bin mit across, ist wie tun Sie einen Schritt Datenbank-Update?

Zum jetzigen Zeitpunkt, wenn wir Änderungen an einer Datenbank vornehmen, werden alle Änderungen aufgezeichnet und in einer Datenbank-Update-Skript hinzugefügt, die eine Versionsnummer erhält damit verbunden, wenn ein deploy auf Kunden Build erstellt wird.

Gibt es einen einfacheren Weg, dies zu tun? Einige Skript oder die Anwendung gibt, die ein „vor und nach“ Blick auf ein Datenbankschema nimmt und erstellt ein Update-Skript, wie ich erwähnt?

Oder ist dies nur die Art und Weise jeder tut es, was ich schwer finden würde zu glauben, aber plausibel.

Ein automatisiertes System würde Fehler verringern und beschleunigt Bereitstellung Bauzeiten erheblich, und ich würde daran interessiert zu wissen, wie dies zu tun.

War es hilfreich?

Lösung

Es gibt verschiedene Ebenen der Komplexität, dass Sie durchmachen können:

  • Wenn Sie Update-Skripte haben, dass Sie manuell erstellen, und suchen nur nach einer Möglichkeit, auf einfache Weise diejenigen auf verschiedene Server anwenden, klicke auf SSW SQL Deploy von SSW Consulting. Es kann dieses Szenario behandelt sehr schön

  • Wenn Sie neigen dazu, mehr von einer Datenbank diff Ansatz zu tun, dann Red Gate SQL Packager macht eine große Combo. Sie können die Datenbank zwischen alten und neuen diff und dann die Änderungen in einem netten Paket anwenden - als EXE oder eine C # -Projekt

  • Wenn Sie ein echtes wollen, End-to-End, dachte gut Ansatz aus (mit einem bisschen einer Lernkurve), Check-out Innovartis' DBGhost Ansatz. Es ist eine ganze Methodik / Technik, wie Datenbank-Entwicklung und inkrementelles Updates zu handhaben. Es ist sehr leistungsfähig und sehr vielversprechend - aber es ist ein bisschen ein Alles-oder-nichts-Ansatz: entweder man in sie kaufen und es verwenden, End-to-End, oder Sie nicht

Hope, das hilft ein wenig!

Andere Tipps

redgate hat ein Tool SQL vergleichen Datenbanken zu vergleichen und generieren ein Skript zu synchronisieren. Wir haben es zu benutzen, aber mehr vor kurzem wechselte zur manuellen Skripte mit dem gleichen Verfahren Sie beschreiben. Mit manuellen, feinkörnig, Skripte mit einer eindeutigen Versionsnummer hat gut funktioniert.

Wir haben unser Upgrade-Skripte in Unit-Tests integriert, so dass sie zusammen mit Code als Teil der kontinuierlichen Integration testen zu lassen. Ich denke, dies ist ein wichtiger Bestandteil, um „einen Build in einem Schritt zu machen.“

Werfen Sie einen Blick auf diesen Blog-Post. Ich habe diese Art von einzelnem Update-Skript von einer beliebigen DB-Version auf ein paar Projekten verwendet und es funktioniert ziemlich gut.

http: / /blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx

Sie können den Workflow ein wenig müssen optimieren Sie Ihre Arbeitsabläufe und / oder aktualisieren, um die Vorlage SQL-Datei zu passen, aber insgesamt habe ich die Idee, findet ein ziemlich solider Ansatz zur DB-Implementierungen zu sein.

EDIT: Nur um zu erarbeiten, wie ich diese Technik benutzt habe. Im Grunde genommen alle meine DB Revision Skripte bekommt in der Quellcodeverwaltung setzen. Dann als Post Build-Schritt auf dem Build-Feld, das Mambo-Tool auf dem Skriptverzeichnis ausführen, um die Skripte in ein einziges Skript von einer Transaktion umfasste rollt für ein Rollback zu ermöglichen, wenn etwas schief geht. Dann wird das Installationsprogramm ist intelligent genug, um für die .sql-Skript zu suchen gegen die bestehende Datenbank ausgeführt werden.

Der Grund, dies funktioniert, ist, weil das Skript überprüft aufgerollt, um jedes Stück zu sehen, dass ein einzelner Skript war bereits lief gegen die gewünschte Datenbank. Als Ergebnis erhalten nur die neuesten Skripte ausgeführt. Ein Nachteil dabei ist, dass einmal ein Skript in der Quellcodeverwaltung geprüft und bereitgestellt wurde, können Sie es nicht bearbeiten können, da bereits die Nachverfolgungstabelle denkt das Skript ausgeführt wurde. Das ist in Ordnung für die Projekte auf die ich gearbeitet habe, weil wir ein anderes Skript in den Skript-Ordner nur hinzuzufügen.

Hoffentlich Ich erkläre den Prozess gut genug zu verstehen. Es ist wirklich nicht so komplex und kann sehr nützlich sein, wenn der Ansatz zu einem Projekt anwendbar ist.

Antwort auf erste Frage „Jetzt habe ich mich gefragt,, bedeutet das Deployment Build (so, dass ein Kunde die Bereitstellung aktualisieren kann)?“

Ich glaube, der Joel Test # 2 ist nicht für den Einsatz bewegt zu prod, aber für continuios intergration während der Entwicklung.

Wie bei Datenbankänderungen in prod, sie sollten alle durch ein Skript als Teil einer Transaktion Roll-out oder nachdem die Datenbank gesichert wurde durchgeführt werden. Sie wollen immer wieder nach oben blättern zu können, sollte etwas in der Roll-out scheitern.

Entwickeln Sie Ihre Datenbank als eine Reihe von Patches, die auf einander abhängen. Verwenden Sie ein Tool wie https://github.com/LuvDaSun/sqlpatch (von mir) ein bauen sQL-Datei für die Bereitstellung.

sqlpatch wird die Patches in der richtigen Reihenfolge sortieren und stellen Sie sicher, dass jeder Patch genau einmal ausgeführt wird, selbst wenn das gleiche Skript zweimal ausgeführt wird.

Diese Strategie kann für die Bereitstellung Ihrer Datenbank in einer CI- / CD-Umgebung verwendet werden. Dieser Make Einsatz so einfach wie auf einen Zweig schieben.

Es gibt Anwendungen, die Sync-Datenbanken, aber ich denke, dass Ihr besser dran tun, was Sie tun. ein Skript zu schreiben, eine Datenbank zu aktualisieren, gibt Ihnen die Möglichkeit Fehler und führen Transaktionen zu verarbeiten. Dies wird am besten Praxis betrachtet.

Microsoft selbst eingeführt Daten-Tier-Anwendungen in SQL 2012 als freie Wahl für die Bereitstellung und Aktualisierung von Datenbanken.

Ich verwende und wie dieses Werkzeug auch für Produktionsimplementierungen.

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