Frage

ich auf einige Schemaänderungen an einer bestehenden Datenbank arbeite.

backed ich die Datenbank eine dev Kopie zu bekommen, und habe meine Änderungen vorgenommen. Ich werde eine einzige Rolle Skript erschaffen die Änderungen an der Produktionsmaschine in einer einzigen Transaktion zu migrieren.

Gibt es eine bewährte Methode, einen Rollback-Skript umhüllt ein Errichtungs Problem entsteht für das Erstellen? Bevor ich habe dann von Hand mit dem folgende Muster geschrieben:

  • Drop neue Einschränkungen und Indizes
  • Ändern Sie Tabellen neue Spalten entfernen
  • Drop hinzugefügt Tabellen
  • Commit-Transaktion

Gibt es einen besseren Ansatz?

War es hilfreich?

Lösung

Das ist im Grunde das, ich glaube nicht, dass es viel hinzuzufügen, abgesehen von dem, was Ihrem Ansatz. Dies ist, wie wir es in unserem Unternehmen zu tun, sind wir Entwickler verantwortlich für das Skript zu schaffen und den Rollback-Skript, und wir sind verantwortlich für die DB im gleichen Zustand verläßt es war, bevor die ersten Änderungen angewandt werden. Dann läuft die DBAs es in der Produktion, wenn es überhaupt ein Problem werden sie den Rollback-Skript und alles ist wieder normal laufen. Denken Sie daran, die Abhängigkeiten und die Reihenfolge, in der Sie Ihre Objekte ändern und dann den Rollback-Skript erstellen zurück.

Andere Tipps

Sie fehlt der fünfte Schritt

  • Drop neue Einschränkungen und Indizes
  • Ändern Sie Tabellen neue Spalten entfernen
  • Drop hinzugefügt Tabellen
  • Commit-Transaktion
  • Testen Sie die Hölle aus dem Skript, bevor es in Produktion

Ein effizienterer Ansatz ist es, die Veränderungen zu registrieren, wie sie geschehen wie RoR < a href = "http://wiki.rubyonrails.org/rails/pages/UsingMigrations" rel = "nofollow noreferrer"> Migrationen a href = " tun . Für jede DB Änderung erstellen Sie ein Skript, das es sowohl die Änderung zu übernehmen und ein Rollback (nach Ihrer Wahl, natürlich). Anschließend können Sie diese Skripte unter Versionskontrolle haben gerade Ihren Code mögen.

Wenn Sie darüber hinaus eine Versionsnummer in der Datenbank halten Sie es ein bisschen mehr automatisieren, indem jedes Skript mit einer Versionsnummer identifizieren und nachdem er sich erhöht oder die Versionsnummer in der Datenbank verringern entsprechend die durchgeführten Aktion.

Wenn es sich um eine relativ kleine Datenbank ist nur eine Sicherung vornehmen, bevor Sie das Upgrade beantragen. Wenn es alles drunter und drüber geht Sie eine Wiederherstellung.

Wenn es Live und neue Daten geht eingegeben man nicht wirklich rollen sowieso zurück kann. Sie müssen nur die Probleme beheben.

Wenn Sie ein Tool wie Redgate SQL verwenden vergleichen, können Sie die zwischen den beiden Datenbanken in beide Richtungen vergleichen laufen und beide verwenden, um die Skripte zu erstellen Sie benötigen. die Entwickler zu prod Skript würde die Änderungen haben Sie machen und die PRD-Skript dev auf die ursprünglichen Produktionsdatenbank Zustand zurückkehren würde. Dadurch wird sichergestellt, Sie nicht vergessen, etwas in jedem Skript als auch.

Mit SQL Server 2005 oder höher Sie auch eine Datenbank-Snapshot erstellen können, dass können Sie jederzeit zu diesem Zustand zurück gehen. Sehen Sie diese Seite für weitere Informationen:

http://msdn.microsoft.com/en-us/library /ms175158.aspx

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