Перед каждым разработчиком рано или поздно встаёт задача сравнение двух баз данных. Особенно часто задача синхронизации баз данных возникает при наличии двух версий проекта - локальной "для разработчиков" и published-версии "для пользователей", когда нужно определить, что именно изменили разработчики в локальной версии базы данных, и перенести эти изменения в published-версию.
Рассмотрим стандартный инструментарий для сравнения баз данных, предложенный нам в Visual Studio 2008 Database Edition. Прежде всего нам будет интересен пункт меню "Data -> Scheme Compare -> New Scheme Comparsion", который осуществляет сравнение структур двух баз данных.
Сравнение структуры происходит в несколько этапов. Для начала нам необходимо указать параметры соединения для исходной базы данных и целевой.
После чего, происходит сравнение этих баз данных и отображение результатов сравнения.
Здесь в списке отображается результат сравнения и действие, которое будет применено к той или иной сущности(таблице, хранимой процедуре) целевой базы данных, чтобы она совпала с исходной, а во вкладке "Object Definitions" - различия в структуре. К сожалению, возможность производить какие-либо дополнительные действия, вроде переименовывания таблицы или частичного "слива" структуры, отсутствуют. Можно лишь пометить сущность как пропущенную (Skip).
Далее, пользуясь панелью управления Scheme Compare или меню Data -> Scheme Compare, мы можем экспортировать скрипт для обновления целевой схемы ("Export To Editor") или вызвать этот скрипт напрямую ("Write Updates"). В любом случае, автоматическое обновление схемы возможно лишь в случае отсутствия записей в таблицах. Если же записи присутствуют инструмент "Scheme Compare" будет полезен лишь для диагностики различий.