Поскольку вы упомянули о других возможных решениях, я расскажу о том, как наш магазин управляет изменениями структуры данных и распространением их на базы данных разработчика.
Для отслеживания и применения различий мы написали приложение на C #, которое эффективно абстрагируетдействия базы данных для классов, которые мы добавляем в список действий.Механизм динамически загружает модули, которые представляют версии базы данных, и добавляет каждый элемент в модуле в список действий, которые необходимо выполнить для обновления этой версии, а затем обрабатывает список.Действия включают DataRowInsertAction, TableCreateAction, ColumnModifyAction и т. Д.
Одним из преимуществ использования этого подхода было то, что мы смогли зафиксировать стандартные файлы .cs в subversion, и пользователи могут обновлять свои собственные базы данных dev простопроверить последние и запустить его.Другим огромным преимуществом является то, что мы можем нацеливаться на несколько механизмов баз данных, поскольку сами действия знают, какой SQL-запрос отображать, в зависимости от того, на какой механизм базы данных нацелены.
В качестве дополнительного примечания мы используем AdeptSQL для сравнения баз данных.и люблю это.Это создаст полный список различий, и вы можете сгенерировать сценарий для движения в любом направлении (с учетом базы данных «A» и базы данных «B», повышения A до B или понижения B до A).
За небольшую дополнительную плату они предлагают расширенные функциональные возможности для выполнения сравнения данных.
http://www.adeptsql.com/