Angenommen, es gibt 3 Datenbanken für
Soweit ich weiß, muss die Staging-Datenbank mit der Produktionsdatenbank synchronisiert sein Aber,
Wenn wir uns entwickeln, können wir mit der Dev -Datenbank machen, was wir wollen, und das Schema ändern. Jetzt kommt hier das Huhn & amp; Ei Problem.
Zum Testen im Staging muss das Datenbankschema Staging entsprechend den Änderungen in der Dev-Datenbank geändert werden. Die Staging-Datenbank muss jedoch mit der Produktion synchronisiert sein.
Wie kommst du um dieses Problem herum?
Staging muss mit der Produktion synchronisiert werden, nur bis zu dem Zeitpunkt, an dem Sie neue Änderungen bereitstellen.
Das oder eine vierte Umgebung namens Test, in der neue Upgrades validiert werden. Wir nennen unsere UAT / Test, und es ist in der Regel eine zweite Datenbank auf dem Staging-Server.
Die genaue Methodik hängt davon ab, wie Sie die Dinge synchron halten. Verwenden Sie tatsächlich Replikation? Oder nur ein Backup / Restore von Prod to Stage?
Sie müssen alle Änderungen an der dev-Datenbank als SQL-Migrationsskripts schreiben, die in einer bestimmten Reihenfolge ausgeführt werden. Ändern Sie die Datenbankstruktur nur, wenn sie sich in einem Skript befindet. Aktualisieren Sie keine Zeilen, fügen Sie keine Zeilen ein oder löschen Sie sie nicht, es sei denn, sie befinden sich in einem Skript.
Idealerweise können Sie verfolgen, welche Skripts für eine Version der gefundenen Datenbank ausgeführt wurden.
Dann können Sie die Stufe wie folgt aktualisieren.
Sobald alles funktioniert ...
"Die Staging-Datenbank muss mit der Produktion synchronisiert sein" Nicht wahr.
Das Produktionsschema ("Design") ist mit dem Staging-Schema synchronisiert. Inszenierung kommt zuerst, Produktion folgt.
Manchmal verschieben Leute die Produktionsdaten herunter, um den Test zu unterstützen, aber das kann je nach Branche gefährlich sein.
Inszenierung ist "rein".
Die Produktion wird aus dem Staging erstellt, indem reale Daten in das reine Staging-Schema eingefügt werden.
Was manche Leute tun, sind zwei Datenbanken.
Heute ist # 1 die Produktion, # 2 ist die Inszenierung.
Morgen planen wir, das Schema zu ändern. Wir aktualisieren # 2 auf das neue Design. Dann verschieben wir Daten von # 1 nach # 2.
Wenn wir mit dem Verschieben der Daten fertig sind, wechseln wir die Anwendungssoftware, um # 2 als Produktion zu verwenden.
Wir laufen mit # 2 als Produktion, bis es Zeit für die nächste Änderung ist.
Wir verwenden unsere Staging-Datenbank nur, um unseren Bereitstellungsmechanismus zu testen. Es entspricht der Produktion.
Wir erstellen unsere Änderungen in der Entwicklung und stellen sie regelmäßig in QA bereit. Sobald wir bereit sind, in Produktion zu gehen, aggregieren wir alle Änderungen in einem Release-Paket. Dieses Release-Paket wird zuerst beim Staging getestet. Wenn es dann keine Bereitstellungsprobleme gibt, wird es an die Produktion übergeben.
Wenn Sie es sich leisten können, ein Test-Env hinzuzufügen, sollten Sie das berücksichtigen.
Ansonsten müssen Sie Ihre Tests in Ihrem dev env durchführen. bis zu einem Punkt, an dem Sie mit der Version so sicher sind, dass Sie die Schemaänderungen in Ihrem Staging-Env vornehmen können. Machen Sie häufige Backups und haben Sie ein gutes Roll-Back-Verfahren, sodass, wenn etwas schief geht, wenn Sie die Schema-Änderungen in die Staging-Umgebung schieben, Sie immer ein Roll-Back durchführen können.
Ein gutes Werkzeug zum Vergleichen eines Datenbankschemas ist SqlCompare . Sie sollten so etwas immer verwenden, bevor Sie die Schemaänderungen übernehmen.