На самом деле, это лучший способ. Как бы громоздко это ни звучало, это лучше, чем альтернативы использования SQL Compare-подобных инструментов или развертывания файла VSDB .schema. Я уже некоторое время отстаиваю именно такой подход к smae: Контроль версий и ваша База данных . Мои приложения развертывают схему v1 из исходного сценария, затем запускают сценарий обновления для каждой версии. Каждый скрипт знает, как перейти с версии N-1 на N, и только это. Окончательный результат - текущая версия.
Самым большим недостатком является отсутствие авторитетного файла .sql, который также ищет, чтобы найти текущую версию любого объекта (процедуры, таблицы, представления и т. Д.). Но преимущества возможности развертывания приложения над любой предыдущей версией и преимущество развертывания с помощью хорошо контролируемых и проверенных сценариев значительно перевешивают недостаток.
Если вам не нравится этот процесс развертывания (сценарий для развертывания v1. Затем примените v1.1, затем v1.2 ... пока, наконец, не примените v4.5, текущий), имейте это в виду: точно так же Процесс используется SQL Server для обновления базы данных между выпусками. Когда вы присоединяете более старую базу данных, вы видите, что известная «база данных выполняет обновление с версии 611 до 612», и вы видите, что обновление идет шаг за шагом , не обновляется прямо до текущей версии 651 (или что бы ни было актуально в вашем случае). При обновлении также не запускается инструмент diff для развертывания v 651 по сравнению с v. 611. Это связано с тем, что подход best - это тот, который вы только что использовали, обновляйте один шаг за раз.
И чтобы добавить реальный ответ на ваш вопрос, после публикации довольно косой темы (у вас есть твердое мнение о теме, можете ли вы сказать?): Я думаю, что полезно иметь текущую версию со скриптом, но Я думаю, что это должен быть непрерывный процесс сборки интеграции. Другими словами, ваш сервер сборки должен построить текущую базу данных (используя сценарии обновления), а затем, в качестве шага сборки, создать сценарий для базы данных и произвести сброс сборки с помощью сценария схемы текущей версии. Но они должны использоваться только как справочник для поиска и проверки кода, а не как результат развертывания, мой 2C.