Существует не общий ответ о том, как сделать «изменения» без простоя. Ответ действительно зависит от случая к случаю, основываясь на том, какие именно изменения. Некоторые изменения не влияют на время простоя (например, добавление новых таблиц), некоторые изменения оказывают минимальное влияние (например, добавление столбцов в существующие таблицы без изменения размера данных, например новый столбец с нулевым значением, который делает snot, увеличивая размер нулевой растровой карты) и другие изменения разрушат хаос во время простоя (любая операция, которая изменит размер данных, заставит и индексирует перестройку и заблокирует таблицу на время). Некоторые изменения невозможно применить без значительного * простоя. Я знаю случаи, когда изменения были применены параллельно: создается копия базы данных, репликация настроена так, чтобы она была актуальной, затем копия была изменена и сохранена в синхронизации, и, наконец, операции перемещаются в модифицированную копию, которая становится основная база данных. Существует презентация на PASS 2009 given by Michelle Ufford, в которой упоминается, как godaddy пережил такое изменение, которое длилось недель.
Но, в меньшем масштабе, вы должны применить изменения через хорошо протестированный скрипт и измерить влияние на оценку теста.
Но настоящий вопрос: это будет последние изменений, которые вы когда-либо делаете на схему? Наконец, вы обнаружили идеальную схему для приложения, и база данных производства никогда не изменится? Поздравляю, как только вы это сделаете, вы можете отправиться на отдых. Но реалистично, вы столкнетесь с той же проблемой через 6 месяцев. реальной проблемой является ваш процесс разработки, с разработчиками и внесение изменений из SSMS или VS Server Explored прямо в базу данных.Ваш процесс разработки должен предпринять сознательные усилия для принятия стратегии изменения схемы, основанной на версиях и сценариях T-SQL, например, описанных в Version Control and your Database.
Является ли ваш вопрос «как мне разбить две базы данных, чтобы найти изменения», или это «как применить известные изменения»? – tpdi
@tpdi: вопрос заключается в том, как решить проблему, поэтому я думаю, что «найти и сохранить изменения» и «применить изменения». Вот почему я принял ответ, который охватывает оба. – Marek