Обычно хостинг-провайдеры позволяют выполнять резервное копирование и восстановление базы данных, поэтому самый простой способ выполнить перемещение - сделать резервную копию вашей действующей БД, загрузить файл резервной копии, восстановить его локально, сделать все изменения, сделать резервную копию локальной БД, загрузите его, а затем восстановите в режиме реального времени. В это время ваш сайт должен быть закрыт на административную работу, чтобы он не продолжал обновлять данные во время выполнения этих операций. Вы должны убедиться, что ваш локальный экземпляр SQL точно такой же версии сборки (@@ version), что и хостинг-провайдер, иначе ваш локальный SQL может обновить структуру базы данных, и вы не сможете восстановить его обратно на хост-провайдере ( или вы не сможете восстановить на локальном сервере, если ваша версия более ранняя, чем у хоста). MSDN BOL содержит подробное руководство о том, как Копировать базы данных с помощью резервного копирования / восстановления .
Альтернативой резервному копированию / восстановлению является отсоединение / присоединение базы данных, но я не рекомендую это делать, поскольку вам нужно синхронизировать MDF и LDF синхронно, и они также больше по размеру, чем резервная копия.
Это предполагает, что вы можете делать все изменения схемы в вашей локальной копии волшебным образом, т.е. быстро и правильно. Конечно, это не легко. Рекомендуемый способ - вовремя подготовить сценарий, который применяет все преобразования, необходимые для достижения новой схемы. Существуют такие инструменты, как SQL Diff , SQL Compare , SQL Delta и другие, которые могут генерировать такой сценарий. Также Visual Studio Database Edition может сделать это.
Как бы я это сделал, было бы так:
- Убедитесь, что у меня на компьютере разработчика точно такая же схема, что и на живом хосте. Если не уверен, я могу сделать резервную копию живого сервера и восстановить его локально. Это будет моя ссылка, v1. схема.
- Сохраняйте резервную копию v1. для справки
- Начните разрабатывать скрипт, который меняет схему на мою цель. Иногда мне нужно обновить память в синтаксисе сценария самостоятельно, и я перехожу к мастерам SQL Server Management Studio для выполнения операции, которую хочу выполнить, выбираю все параметры в пользовательском интерфейсе и затем выбираю «Показать параметры сценария». , это покажет мне, какой именно сценарий SSMS выполняет для выполнения желаемого изменения.
- Для каждого изменения, которое я добавляю в скрипт, я могу проверить его, восстановив v1. ссылка на резервное копирование у меня с шага 1 и запуска сценария.
- Продолжайте повторять сценарий, добавляя одно изменение за раз, пока все необходимые изменения схемы не будут выполнены. После каждого изменения я могу проверить его снова, как в шаге 4.
- Ваш скрипт должен вносить не только изменения DDL в схему, но также и любые необходимые изменения DML (изменение справочных данных, изменение значений, перемещение столбцов между таблицами и т. Д.).
- Когда сценарий будет готов, я могу загрузить более новую резервную копию, применить сценарий, загрузить обновленную резервную копию и восстановить ее на действующем хосте. В качестве альтернативы вы можете просто запустить скрипт на живом хосте (после того, как вы, конечно, сделали резервную копию на случай, если что-то пойдет не так).
В моих проектах я всегда использую сценарии для развертывания и обновления базы данных. Фактически я использую расширенные свойства базы данных для хранения «версии» развернутой схемы моего приложения, и в своем коде я просто откатываю все сценарии, которые приводят схему к моей последней версии. В моем блоге есть статья, описывающая эту технику: Контроль версий и ваша база данных .