Изменение базы данных SQL на общем хостинге - PullRequest
0 голосов
/ 18 июля 2009

У меня есть живая база данных на сервере общего хостинга. Я делаю некоторые серьезные изменения в коде моего сайта, и я хотел бы исправить некоторые глупые ошибки, которые я сделал при первоначальном проектировании базы данных. Эти изменения включают в себя изменение размера большого количества полей и правильное соблюдение ссылочной целостности между таблицами. Я хотел бы внести изменения как на моем локальном тестовом сервере, так и на удаленном сервере, если это возможно.

Должен заметить, что, хотя мне довольно удобно писать сложные запросы для обработки данных, у меня очень мало опыта в изменении структуры базы данных без графического интерфейса.

Я могу получить доступ к удаленной базе данных в обозревателе баз данных visual studio, но не могу использовать ее ни для чего, кроме манипулирования данными. Вчера вечером я установил Sql Management Studio Express, и после 40 сбоев я сдался - я даже не мог исправить эту чертову штуку.

Удаленный сервер - SQL 2005 / Доступен веб-интерфейс MyLittleAdmin. Поэтому мой вопрос заключается в том, как лучше всего выполнить эти изменения. Есть ли графический интерфейс, который я могу использовать на удаленном сервере? Если нет, то есть ли простой способ скопировать базу данных на мой локальный компьютер, исправить ее и загрузить заново? Наконец, если ни одно из вышеперечисленного не является жизнеспособным, есть ли у кого-нибудь ссылки на приличную информацию об исправлении ссылочной целостности с помощью запроса?

Извините за несколько общий вопрос - я чувствую, что делаю это намного сложнее, чем следовало бы, но после поиска / попытки всю ночь я никуда не попал. Заранее спасибо за помощь. Я очень ценю это.

... Также у кого-нибудь есть машина времени, которую я могу одолжить - мне нужно пойти и надрать себе задницу прошлого.

1 Ответ

2 голосов
/ 18 июля 2009

Обычно хостинг-провайдеры позволяют выполнять резервное копирование и восстановление базы данных, поэтому самый простой способ выполнить перемещение - сделать резервную копию вашей действующей БД, загрузить файл резервной копии, восстановить его локально, сделать все изменения, сделать резервную копию локальной БД, загрузите его, а затем восстановите в режиме реального времени. В это время ваш сайт должен быть закрыт на административную работу, чтобы он не продолжал обновлять данные во время выполнения этих операций. Вы должны убедиться, что ваш локальный экземпляр SQL точно такой же версии сборки (@@ version), что и хостинг-провайдер, иначе ваш локальный SQL может обновить структуру базы данных, и вы не сможете восстановить его обратно на хост-провайдере ( или вы не сможете восстановить на локальном сервере, если ваша версия более ранняя, чем у хоста). MSDN BOL содержит подробное руководство о том, как Копировать базы данных с помощью резервного копирования / восстановления .

Альтернативой резервному копированию / восстановлению является отсоединение / присоединение базы данных, но я не рекомендую это делать, поскольку вам нужно синхронизировать MDF и LDF синхронно, и они также больше по размеру, чем резервная копия.

Это предполагает, что вы можете делать все изменения схемы в вашей локальной копии волшебным образом, т.е. быстро и правильно. Конечно, это не легко. Рекомендуемый способ - вовремя подготовить сценарий, который применяет все преобразования, необходимые для достижения новой схемы. Существуют такие инструменты, как SQL Diff , SQL Compare , SQL Delta и другие, которые могут генерировать такой сценарий. Также Visual Studio Database Edition может сделать это.

Как бы я это сделал, было бы так:

  1. Убедитесь, что у меня на компьютере разработчика точно такая же схема, что и на живом хосте. Если не уверен, я могу сделать резервную копию живого сервера и восстановить его локально. Это будет моя ссылка, v1. схема.
  2. Сохраняйте резервную копию v1. для справки
  3. Начните разрабатывать скрипт, который меняет схему на мою цель. Иногда мне нужно обновить память в синтаксисе сценария самостоятельно, и я перехожу к мастерам SQL Server Management Studio для выполнения операции, которую хочу выполнить, выбираю все параметры в пользовательском интерфейсе и затем выбираю «Показать параметры сценария». , это покажет мне, какой именно сценарий SSMS выполняет для выполнения желаемого изменения.
  4. Для каждого изменения, которое я добавляю в скрипт, я могу проверить его, восстановив v1. ссылка на резервное копирование у меня с шага 1 и запуска сценария.
  5. Продолжайте повторять сценарий, добавляя одно изменение за раз, пока все необходимые изменения схемы не будут выполнены. После каждого изменения я могу проверить его снова, как в шаге 4.
  6. Ваш скрипт должен вносить не только изменения DDL в схему, но также и любые необходимые изменения DML (изменение справочных данных, изменение значений, перемещение столбцов между таблицами и т. Д.).
  7. Когда сценарий будет готов, я могу загрузить более новую резервную копию, применить сценарий, загрузить обновленную резервную копию и восстановить ее на действующем хосте. В качестве альтернативы вы можете просто запустить скрипт на живом хосте (после того, как вы, конечно, сделали резервную копию на случай, если что-то пойдет не так).

В моих проектах я всегда использую сценарии для развертывания и обновления базы данных. Фактически я использую расширенные свойства базы данных для хранения «версии» развернутой схемы моего приложения, и в своем коде я просто откатываю все сценарии, которые приводят схему к моей последней версии. В моем блоге есть статья, описывающая эту технику: Контроль версий и ваша база данных .

...