24 Stimmen

Was sind die besten Praktiken für Datenbank-Skripte unter Code-Kontrolle?

Wir überprüfen derzeit, wie wir unsere Datenbankskripte (Tabellen, Procs, Funktionen, Ansichten, Datenkorrekturen) in Subversion speichern, und ich frage mich, ob es einen Konsens darüber gibt, was der beste Ansatz ist?

Einige der Faktoren, die wir berücksichtigen müssen, sind:

  • Sollten wir Skripte "Erstellen" einchecken oder inkrementelle Änderungen mit Skripten "Ändern" einchecken?
  • Wie können wir den Stand der Datenbank für eine bestimmte Version im Auge behalten?
  • Es sollte einfach sein, eine Datenbank von Grund auf für jede beliebige Release-Version zu erstellen.
  • Sollte es in der Datenbank eine Tabelle geben, in der die Skripte aufgelistet sind, die gegen sie gelaufen sind, oder die Version der Datenbank usw.

Das ist natürlich eine ziemlich offene Frage, deshalb bin ich gespannt, was die Leute aus ihren Erfahrungen gelernt haben.

1voto

JBrooks Punkte 9570

Wir erstellen einen Zweig in Subversion, und alle Datenbankänderungen für die nächste Version werden in einem Skript ausgearbeitet und eingecheckt. Alle Skripte sind wiederholbar, so dass Sie sie mehrmals ohne Fehler ausführen können.

Wir verknüpfen die Änderungsskripte auch mit Problemeinträgen oder Fehler-IDs, so dass wir einen Änderungssatz bei Bedarf zurückhalten können. Wir haben dann einen automatisierten Erstellungsprozess, der die von uns freigegebenen Problemstellungen betrachtet, die Änderungsskripte aus Subversion abruft und eine einzige SQL-Skriptdatei mit allen Änderungen erstellt, die entsprechend sortiert sind.

Diese einzelne Datei wird dann verwendet, um die Änderungen in die Test-, QA- und Produktionsumgebungen zu übertragen. Der automatisierte Build-Prozess erstellt auch Datenbankeinträge, die die Version dokumentieren (Zweig plus Build-ID). Wir glauben, dass dies der beste Ansatz für Unternehmensentwickler ist. Weitere Einzelheiten zu dieser Vorgehensweise finden Sie unter HIER

0voto

Jim T Punkte 12090

Die Option Skript erstellen:

Verwenden Sie Erstellungsskripte, die Ihnen die neueste Version der Datenbank von Grund auf neu erstellen, die bis auf die Standard-Lookup-Daten leer ist.

Verwenden Sie standardmäßige Versionskontrolltechniken, um Versionen zu speichern, zu verzweigen, zu kennzeichnen und die Historie Ihrer Objekte anzuzeigen.

Wenn Sie eine Live-Datenbank aktualisieren (wo Sie keine Daten verlieren wollen), erstellen Sie eine leere zweite Kopie der Datenbank mit der neuen Version und verwenden Sie ein Tool wie red-gate's Linktext

Pro: Änderungen an Dateien werden wie bei einem Standard-Quellcode nachverfolgt

Nachteile: Abhängigkeit von der manuellen Verwendung eines Tools eines Drittanbieters zur Durchführung der tatsächlichen Upgrades (keine/kaum Automatisierung)

0voto

Unser Unternehmen prüft sie nur, weil jemand beschlossen hat, sie in ein SOX-Dokument aufzunehmen, das wir erstellen. Das ergibt für mich überhaupt keinen Sinn, außer vielleicht als Referenzdokument. Ich kann mir nicht vorstellen, dass wir sie jemals wieder herausnehmen und verwenden würden, und wenn wir es täten, müssten wir wissen, welches Dokument zuerst und welches danach ausgeführt wurde. Die Sicherung der Datenbank ist viel wichtiger als die Aufbewahrung der Altersskripte.

0 Stimmen

Ich bin sicher, dass sie nur aus Gründen der SOX-Dokumentation aufbewahrt werden, damit Sie den Prüfern (falls sie danach fragen) zeigen können, WELCHE Änderungen vorgenommen wurden.

1 Stimmen

Sicherlich wäre es ebenso wichtig, dass Sie SELBST nachweisen können, welche Änderungen vorgenommen wurden.

0voto

Für jede Version müssen wir eine Datei update.sql erstellen, die alle neuen Tabellenskripte, Alter-Anweisungen, neue/geänderte Pakete, Rollen usw. enthält. Diese Datei wird für das Upgrade der Datenbank von Version 1 auf Version 2 verwendet.

Was auch immer wir in update.sql Datei oben ein alle diese Anweisungen müssen zu einzelnen jeweiligen Dateien zu gehen. wie alter Anweisung hat zu Tabelle als eine neue Spalte (Tabelle Skript geändert werden muss nicht Alter Anweisung wird nach erstellen Tabelle Skript in der Datei hinzugefügt) in der gleichen Weise neue Tabellen, Rollen usw. gehen.

Wenn ein Benutzer also ein Upgrade durchführen möchte, wird er die erste update.sql-Datei für das Upgrade verwenden. Wenn er von Grund auf neu erstellen möchte, wird er die Datei build.sql verwenden, die bereits alle oben genannten Anweisungen enthält, wodurch die Datenbank synchronisiert wird.

sriRamulu Sriramis4u@yahoo.com

0voto

Eduardo Cuomo Punkte 15791

In meinem Fall erstelle ich ein SH-Skript für diese Arbeit: https://github.com/reduardo7/db-version-updater

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