Управление миграцией БД: скрипты и инструменты - PullRequest
7 голосов
/ 07 июня 2011

В нашем проекте около 20 разработчиков, но наше приложение использует сравнительно легкие базы данных.У нас есть коллекция из примерно 5 баз данных, каждая из которых очень мала и будет иметь менее 20 таблиц в каждой, ни в одной из которых нет миллионов строк или чего-либо большого.

У нас есть два варианта таблицычтобы управлять развитием баз данных с течением времени:

  • Какой-то инструмент.В настоящее время мы используем проекты базы данных Visual Studio, которые содержат текущее определение схемы, и смотрим на справочную базу данных, чтобы сгенерировать скрипт diff.Затем мы используем этот сценарий сравнения, чтобы обновить эталонную базу данных.
  • Используйте сценарии версий для создания базы данных с базового уровня.Сценарии вручную помещаются в систему контроля версий.Любая миграция данных для перемещения данных из старых столбцов / таблиц в новые будет частью этих сценариев.Где-то в БД будет записана версия, и при обновлении будут запускаться все сценарии между версией БД и текущей версией.

Второй вариант, похоже, широко используется, и я нашел здесь углубленное обсуждение:http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx

Проблема с тем, что у нас есть на данный момент, заключается в том, что у нас нет доступа к нашим производственным базам данных.Это означает, что для создания пакета выпуска нам нужно восстановить резервную копию Production в другое место, сгенерировать diff для этой ссылочной БД и передать сценарий команде рабочей БД.Таким образом, наш выпуск в производство отличается от других наших сред.

Это делает идею запуска версионных скриптов привлекательной, потому что мы используем одни и те же скрипты во всех средах, и нет никакой специальной работы при развертывании (например, ручное восстановление).прод к справочной БД).Но, учитывая, что у нас такая мелкомасштабная ситуация с БД, я чувствую, что вряд ли мы можем быть трудным случаем для инструментов БД.Нам нужно как можно более простое и легкое для понимания.

Имеют ли смысл такие инструменты, как набор RedGate, для такого сценария, или мы должны идти с версионными сценариями?Стоимость - это не столько проблема, сколько создание Ямы Успеха, когда обслуживание и развертывание БД максимально просты и автоматизированы.

Ответы [ 3 ]

3 голосов
/ 08 июня 2011

Я менеджер по продукту в Red Gate for SQL Compare, который генерирует сценарии diff для двух баз данных.Я хотел бы, чтобы вы взглянули на наш инструмент управления исходным кодом SQL, который позволит вам отслеживать изменения схемы по мере их внесения в разработку.Когда дело доходит до развертывания, если вы знаете, какая версия схемы находится в производстве, вы можете сгенерировать сценарий развертывания из ваших версий, контролируемых исходным кодом.Конечно, вы всегда должны тестировать это в промежуточной среде перед запуском в производство.

Статья Скотта дает отличное замечание относительно сценария миграции, и Денис ссылается на более сложные изменения, которые не могут быть вторымипредположено инструментами сравнения, и, следовательно, потребует соответствующего управления сценариями миграции и их использования.Поэтому следующая версия SQL Compare в сочетании с SQL Source Control будет управлять обеими версиями схемы и сценариями миграции, что позволит вам получить лучшее из обоих миров.Если вы хотите увидеть ранние скриншоты этого, пожалуйста, напишите мне по адресу Дэвид Дот Аткинсон в Red-Gate Dot Com.Мне бы очень хотелось обсудить ваши требования, чтобы мы могли лучше спроектировать инструмент.

3 голосов
/ 07 июня 2011

По моему опыту, всегда есть нечто большее, чем просто изменения схемы. Если вы разбили столбец на две части или переместили столбец в отдельную таблицу, или по другим причинам, вам нужно перенести и схему, и данные.

Никакой инструмент или скрипт не позволит вам автоматически переносить фактические данные. Самое большее, вы получите diff для схемы, которую ваши разработчики могут найти полезным в качестве напоминания / контрольного списка для сценариев миграции версий БД (последовательности создания / изменения / удаления и вставки / обновления / удаления выполняются в одной транзакции) ,

0 голосов
/ 29 марта 2016

при переносе необходимо создать сценарий для базы данных, объектов базы данных, разрешений базы данных, имен входа на сервер, разрешений сервера, заданий sql, почтовых профилей sql, связанные серверы. приведенный ниже скрипт Power Shell поможет вам получить его. Пожалуйста, внимательно прочитайте инструкцию перед запуском скрипта Power Shell.

https://gallery.technet.microsoft.com/SCRIPTING-DB-DB-OBJECTS-DB-81bba072

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