Es gibt keine allgemeine Antwort darauf, wie Änderungen ohne Ausfallzeiten vorgenommen werden können. Die Antwort hängt wirklich von Fall zu Fall ab, basierend auf genau was die Änderungen sind. Einige Änderungen haben keinen Einfluss auf die Ausfallzeit (z. B. Hinzufügen neuer Tabellen), einige Änderungen haben minimale Auswirkungen (z. B. das Hinzufügen von Spalten zu vorhandenen Tabellen ohne Änderung der Datengröße, wie eine neue Nullable-Spalte, die die Null-Bitmap-Größe erhöht) andere Änderungen werden die Ausfallzeit zerstören (jede Operation, die die Datengröße ändert, wird die Wiederherstellung erzwingen und indexieren und die Tabelle für die Dauer sperren). Einige Änderungen sind ohne signifikante Ausfallzeiten nicht möglich. Ich kenne Fälle, in denen die Änderungen parallel angewendet wurden: Eine Kopie der Datenbank wird erstellt, die Replikation wird so eingerichtet, dass sie aktuell bleibt, dann wird die Kopie geändert und synchron gehalten, schließlich werden die Operationen in die geänderte Kopie verschoben Stammdatenbank. Es gibt eine Präsentation unter PASS 2009 given by Michelle Ufford, die erwähnt, wie Gottaddy durch solch eine Veränderung, die dauerte Wochen dauerte.
Aber in einem geringeren Maßstab müssen Sie die Änderungen durch ein gut getestetes Skript anwenden und die Auswirkungen auf die Testauswertung messen.
Aber die eigentliche Frage ist: wird dies die letzten Änderungen, die Sie jemals an das Schema vornehmen? Schließlich haben Sie das perfekte Schema für die Anwendung entdeckt und die Produktionsdatenbank wird sich nie ändern. Gratulation, wenn du das einmal gemacht hast, kannst du zur Ruhe gehen. Aber realistisch gesehen, werden Sie das gleiche Problem in 6 Monaten begegnen. Das eigentliche Problem ist Ihr Entwicklungsprozess, mit Entwicklern und Änderungen von SSMS oder VS Server Explored direkt in die Datenbank.Ihr Entwicklungsprozess muss sich bewusst bemühen, eine Schemaänderungsstrategie auf Basis von Versions- und T-SQL-Skripten zu übernehmen, wie sie in Version Control and your Database beschrieben ist.
Ist Ihre Frage "wie kann ich zwei Datenbanken unterscheiden, um die Änderungen zu finden" oder ist es "wie kann ich bekannte Änderungen anwenden?"? – tpdi
@ tpdi: die Frage ist, wie das Problem zu lösen, so denke ich, sowohl "finden und pflegen Änderungen" und "Änderungen anwenden". Deshalb habe ich die Antwort akzeptiert, die beide abdeckt. – Marek