Я использую SQL-Server 2008 с Visual Studio Database Edition.
С этой настройкой синхронизация вашей схемы очень проста. В принципе, есть инструмент "сравните схему", который позволяет мне синхронизировать схему двух баз данных и/или схему базы данных с папкой создания script с контролем источника.
Однако ситуация становится менее ясной, когда речь заходит о данных, которые могут быть трех разных типов:
-
статические данные, указанные в коде. типичный пример: мои пользователи могут изменять свои настройки, а их конфигурация хранится на сервере. Однако существует системное значение по умолчанию для каждого параметра, которое используется в случае, если пользователь не переопределил его. Таблица, содержащая эти настройки по умолчанию, увеличивается с добавлением дополнительных параметров в программу. Это означает, что когда включена новая функция/опция, общесистемный параметр по умолчанию обычно создается и в базе данных.
-
статические данные. например. список продуктов, в котором находится раскрывающийся список. Программа не полагается на существование определенного продукта в списке для работы. Это может быть, например, список продуктов, закодированных в кодировке Unicode, которые должны быть развернуты при создании новой версии Unicode программы.
-
другие данные, т.е. все остальное (журналы, учетные записи пользователей, пользовательские данные и т.д.)
Мне кажется очевидным, что мой третий элемент не должен контролироваться исходным кодом (конечно, он должен быть подкреплен на регулярной основе)
Но что касается статических данных, мне интересно, что делать.
-
Должен ли я добавлять скрипты вставки к скриптам создания? или, возможно, использовать отдельные сценарии?
-
Как я (как разработчик) предупреждает людей, выполняющих развертывание, что они должны выполнить инструкцию insert?
-
Должен ли я дифференцировать данные двух типов? (первый из которых обычно создается разработчиком, а второй - не-dev)
Как вы управляете статическими данными БД?