Frage

Wir haben 18 Datenbanken, die identische Schemata haben sollte, aber dies nicht tun. In bestimmten Szenarien wurde eine Tabelle zu einem hinzugefügt, aber nicht den Rest. Oder bestimmte gespeicherte Prozeduren wurden in einer Handvoll von Datenbanken erforderlich, aber nicht die andere. Oder vergessen unsere DBA ein Skript ausführen alle Datenbanken hinzuzufügen Ansichten auf.

Was ist der beste Weg, Datenbankschemata synchron zu halten?

War es hilfreich?

Lösung

Für ältere Fixes / Bereinigung gibt es Tools, wie SQLCompare , dass können Skripte erzeugen Datenbanken zu synchronisieren.

Für .NET Geschäfte mit SQL Server, gibt es auch die Visuelle Studio Database Edition , die Änderungsskripts für Schemaänderungen erstellen kann, die in der Quellcodeverwaltung überprüft werden können, und automatisch aufgebaut mit Ihrem CI / Build-Prozess.

Andere Tipps

SQL vergleichen von Red Gate ist ein großes Werkzeug für diese .

SQLCompare ist das beste Werkzeug, das ich haben für die Suche nach Unterschieden zwischen Datenbanken und bekommen sie synchronisiert.

Um die Datenbanken zu halten synchronisiert ist, dann müssen Sie einige Dinge im Ort haben:

1) Sie brauchen eine Politik über die Änderungen an der Produktion machen. Generell sollte dies nur der DBA (DBA Team für größere Orgs) und 1 oder 2 backaps. Die Sicherungen sollten nur Änderungen vornehmen, wenn der DBA aus ist, oder in einem Notfall. Die Backups sollten nicht auf einer regelmäßigen Basis bereitstellen. Stellen Datenbank Rechte nach dieser Politik.

2) Verfahren und Tools Bereitstellung Anfragen zu verwalten. Idealerweise haben Sie eine Entwicklungsumgebung haben, eine Testumgebung und eine Produktionsumgebung. Entwickler sollten in der Entwicklungsumgebung anfängliche Entwicklung tun, und haben Änderungen entsprechend zu prüfen und Produktion geschoben. Sie werden eine Möglichkeit zu lassen, die DBA müssen wissen, wann Änderungen zu drücken. Ich würde ein Verfahren empfehlen, wo man auf den nächsten Würfel brüllen. Großer Orgs kann ein Änderung Kontrollgremium hat und Änderungen nur einmal im Monat gemacht bekommen. Kleinere Unternehmen können nur noch die Entwickler Anfrage Test und nach dem Test wird eine Anforderung für den Einsatz zur Produktion übergeben. Ein kleineres Unternehmen arbeitete ich für gebrauchte Problem Tracker für diese Anforderungen.

Verwenden Sie, was in Ihrer Situation und Budget arbeitet, hat nur einen Prozess, und haben Werkzeuge, die für diesen Prozess arbeiten.

3) Sie haben gesagt, manchmal Objekte müssen nur auf eine Handvoll von Datenbanken gehen. genau mit nur 18 Datenbanken, wahrscheinlich auf einem Server, würde ich empfehlen, die jeweils Databse Spiel Objekte machen. Nur 5 DBs müssen usp_DoSomething? Na und? Legen Sie es in jedem databse. Dies wird viel einfacher zu verwalten. Wir haben es auf diese Weise auf einem 6-Server-System mit rund 250-300 DBs. Es gab Ausnahmen, aber sie waren gruppiert. Datenbanken auf dem Server C erhielt diese zusätzliche Menge von Objekten. Datenbanken auf Server L erhielten diesen anderen Satz.

4) Du hast gesagt, dass manchmal die DBA vergisst Änderung Skripte auf alle DBs bereitstellen. Das sagt mir, dass er / Tools für die Bereitstellung von Änderungen benötigt. S / Er ist wahrscheinlich einen SQL-Skript nehmen, es in in Query Analyzer oder Manegement Studio zu öffnen (oder was auch immer Sie verwenden) und manuell an jede Datenbank gehen und die SQL-Ausführung. Dies ist keine gute langfristige (oder kurzfristig) Lösung. Red Gate (Hersteller von SQLCompare oben) haben viele große Werkzeuge. Multiskript sieht aus wie es für den Einsatz Zwecke arbeiten. Ich arbeitete mit einem DBA, die 2000 unter Verwendung von O-SQL ist eigenes Tool in SQL Server geschrieben. Es wäre eine SQL-Datei nehmen und es auf jede Datenbank auf dem Server auszuführen. Er mußte es auf jedem Server ausführen, aber es schlug auf jeder DB ausgeführt wird. Ich half auch ein VB.net Werkzeug zu schreiben, die das gleiche tun würde, außer es auch durch eine Liste der Server gehen würde, so hatte es nur einmal ausgeführt werden.

5) Source Control. Mein Team verwendet keine Quellcodeverwaltung, und ich habe nicht genug Zeit, um Ihnen zu sagen, wie viele Probleme dies verursacht. Wenn Sie nicht über irgendeine Art von Quellkontrollsystem haben, eines zu bekommen.

Ich habe nicht genug Ruf kommentieren die oben Antwort, aber die Pro-Version von SQL Vergleichen Sie hat eine skriptfähige API bekommt. Vorausgesetzt, dass Sie Sachen auf alle diesen Datenbanken replizieren, müssen Sie dies nutzen könnten einen automatisierten Job zu machen, entweder die Änderungsskripts erzeugen oder zu bestätigen, dass die Datenbanken alle synchron sind. Es ist auch nicht viel teurer als die Standardversion.

Neben der Datenbank-Vergleich-Tools, mit 18 Datenbanken Sie ein DBA haben sollte, so eine Politik durchzusetzen, dass nur die DBA-Tabellen auf Datenbankebene ändern kann, indem sie den Zugang zu beschränken sich nur auf die DBA CREATE und ALTER. Auf beiden Test- und Live-Datenbanken. Die Entwickler-Datenbank soll dies natürlich nicht! Machen Sie die Entwickler, die haben die Erstellung oder Änderung der Schemata notgedrungen über den DBA gehen.

Erstellen Sie eine einzelne Quelle gesteuerte DDL / SQL-Skript für jede Version und nur verwenden es, die Datenbanken zu aktualisieren. Die diff Tools können nützlich sein, aber vor allem für die Überprüfung, dass Sie nicht einen Fehler gemacht und immer aus der Patsche gemacht haben, wenn die Politik scheitern. Kombinieren Sie die DDL, SQL und gespeicherte Prozedur Skripte in ein einziges Skript so, dass es nicht einfach zu „vergessen“, eine der Skripte auszuführen.

Wir haben ein Werkzeug bekommen DB Schema Difftective aufgerufen, und Sync-Datenbankschema vergleichen kann. Mit anderem Werkzeug, DB MultiRun können Sie leicht erzeugen deploy (sync) Skripte auf mehr DB-Server (Projekt basiert).

Ich weiß, dieser Beitrag ist alt, aber TurnKey ist richtig. Wenn Sie ein Entwickler arbeitet in einem Team sind, ist der beste Weg, um ein Datenbank-Schema für eine große Anwendung zu erhalten, ist, um Updates zu einem Master-Schema zu machen, was immer Quelle sicher Sie verwenden. Sie einfach Ihre eigene Scripting-Klasse schreiben und Ihre Datenbank jedes Mal perfekt sein wird.

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