0

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

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

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

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

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

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

+0

Ну, это может быть хорошей идеей клонировать вашу текущую базу данных и сначала проверять все изменения. Что касается машины времени, theres всегда http://en.wikipedia.org/how_to_build_a_time_machine –

+0

Эта ссылка относится к удаленной странице википедии. –

ответ

2

Обычно хостинг-провайдеры позволяют вам создавать резервные копии и восстанавливать вашу базу данных, поэтому самый простой способ выполнить этот шаг - сделать резервную копию своей живой базы данных, загрузить файл резервной копии, восстановить его локально, сделать все изменения, сделать резервную копию локальный db, загрузить его, а затем восстановить его в режиме реального времени. В течение этого времени ваш сайт должен быть включен в административное завершение, чтобы он не продолжал обновлять данные во время выполнения этих операций. Вы должны убедиться, что ваш локальный экземпляр SQL находится точно в той же версии сборки (версия @@), что и хостинг-провайдер, в противном случае ваш локальный SQL может обновить структуру базы данных, и вы не сможете восстановить ее на хостинг-провайдере (или вы не сможете восстановить их на локальном сервере, если ваша версия раньше, чем у хоста). MSDN BOL содержит подробное руководство по использованию Copy Databases using Backup/Restore.

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

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

Как бы это было бы так:

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

В моих проектах я всегда полагаюсь на скрипты для развертывания и обновления базы данных. На самом деле я использую расширенные свойства базы данных для хранения «версии» развертываемой схемы приложения и в своем коде я просто перескакиваю все сценарии, которые приносят схему в мою последнюю версию. У меня есть статья на моем блоге, описывающая эту технику: Version Control and your Database.

+0

Огромное спасибо за всю информацию! Это именно то, что мне нужно. –

Смежные вопросы