Для распространения приложения мой любимый подход на самом деле один встроенный: Контроль версий и ваша база данных .
Я использую расширенные свойства базы данных для хранения текущей развернутой на диске схемыверсия, а затем запустите внутренний массив обновления, который поддерживает соответствие между версией на диске => сценарий обновления до следующей версии.При запуске приложение выполняет шаги в массиве обновлений, пока версия на диске не совпадет с текущей версией приложения.Таким образом, обновление проходит через все промежуточные версии.Развертывание нового сайта (нового местоположения) проходит через каждую версию схемы, иногда создавая и удаляя объект, который больше не используется.Это может показаться странным, но в конце концов приложение может быть развернуто поверх любой ранее выпущенной версии.Если у клиента есть схема 3 года назад, то все забыли, что она содержит, приложение знает, как всегда обновлять ее, и это здорово.
Я предпочитаю этот подход, а не инструменты сравнения сравнения (например,Интеграция проекта VS DB), потому что она тестируема и предлагает гораздо лучший контроль над точными шагами, предпринимаемыми при любом обновлении.Инструменты Diff выполняют все виды сомнительных действий, таких как копирование таблиц и переименование, которые не работают для развертываний размером + 1 ТБ (с которыми сталкивается мое приложение).
Если ожидаемый размер данных достаточно мал (<100 Гб), я бы рассмотрел инструменты на основе diff.В таких условиях отлично работает развертывание проекта VS DB на основе <a href="http://msdn.microsoft.com/en-us/library/dd193283.aspx" rel="nofollow noreferrer"> vsdbcmd .Кроме того, если целью развертывания является только одно местоположение (т. Е. Веб-приложение, в котором есть только одна цель, веб-сайт db), то возможность обновления любой предыдущей версии теряет свою привлекательность.