Как включить дрейф обратно в мой проект базы данных сервера Sql?

С обычными решениями для управления исходным кодом программист обновляет свой код из репозитория, а затем регистрирует свои изменения в репозитории.

Единственный способ, которым я знаю, как включить дрейф обратно в мой проект, - это использовать функцию сравнения схем, однако эта функция просто сообщает мне, в чем разница между моим проектом и целевой базой данных, не давая никаких указаний относительно того, какие изменения произошли, где так Я мог бы потенциально отменить изменения, которые я сделал со своей стороны, если я не позабочусь об исключении этих элементов при обновлении моего проекта с помощью сравнения схем.

Есть ли лучший способ включить дрейф обратно в мой проект, не беспокоясь о том, чтобы быть очень осторожным, чтобы не сдуть изменения, которые я сделал?


person Brandon Moore    schedule 20.02.2013    source источник
comment
Что именно вы подразумеваете под дрейфом? Вы имеете в виду поля, добавленные в базу данных SQL Server другими разработчиками? Они не могут удалять или переименовывать поля, иначе они сломают все остальные сборки. Мне кажется, что им нужно будет включить сценарии SQL в свои версии кода, если они вносят изменения в базу данных.   -  person Robert Harvey    schedule 21.02.2013
comment
@RobertHarvey Да, но, в частности, в моем случае другими разработчиками.   -  person Brandon Moore    schedule 21.02.2013
comment
@RobertHarvey Я думаю о ситуациях, когда в базе данных может потребоваться некоторый рефакторинг. Проекты, над которыми я работал в прошлом, обычно требовали критических изменений в тот или иной момент, но когда это происходит, мы, очевидно, должны быть осторожны, чтобы обновлять код одновременно, а разработчики должны быть осторожны, чтобы обновлять код и изменения базы данных в момент их появления. в то же время.   -  person Brandon Moore    schedule 21.02.2013
comment
Исторически сложилось, что в проектах, над которыми я работал, это работало так: при установке программного обеспечения был этап обновления базы данных, который добавлял новые поля (а иногда удалял или переименовывал существующие поля) в установленную пользователем базу данных. Автоматическое резервное копирование базы данных всегда является хорошим первым шагом.   -  person Robert Harvey    schedule 21.02.2013
comment
@RobertHarvey Да, это то, что я делал и в предыдущих проектах, но я больше сосредоточен на процессе распространения изменений, сделанных разработчиками здесь, до того, как произойдет развертывание, поэтому установка программного обеспечения не является частью этого процесса.   -  person Brandon Moore    schedule 21.02.2013
comment
Обычно это делается с помощью сценариев SQL.   -  person Robert Harvey    schedule 21.02.2013
comment
@RobertHarvey Действительно. Но я использую проект базы данных SQL Server, как уже упоминалось, и идея состоит в том, что он должен позаботиться об этом за меня, и мне не придется возиться со сценариями.   -  person Brandon Moore    schedule 21.02.2013
comment
Как это может произойти без кода? Ну, можно было бы написать алгоритм сравнения, но мне кажется, что скрипты были бы проще; вы можете вернуть их в свой репозиторий кода и поддерживать контроль версий.   -  person Robert Harvey    schedule 21.02.2013
comment
@RobertHarvey arcanecode.com /28.08.2012/   -  person Brandon Moore    schedule 21.02.2013


Ответы (3)


Если вы используете SSMS, вы можете попробовать использовать SQL Source Control в сочетании с вашим проектом базы данных. Мы анонсировали бета-версию с этой функциональностью, работающей здесь:

http://social.msdn.microsoft.com/Forums/en-US/ssdt/thread/0c763f98-c55a-44a7-9100-80a6d9223d04

Это позволит различать изменения, внесенные в базу данных, которые еще не были синхронизированы с проектом, и изменения в проекте, которые необходимо применить к базе данных. Если это не соответствует вашим потребностям, команда проекта SQL Source Control будет рада получить от вас известие!

person David Atkinson    schedule 25.02.2013
comment
Спасибо, Дэвид. Инструменты RedGate обычно имеют тенденцию быть немного дорогими для меня как разработчика-одиночки, и я ненавижу связывать себя чем-то, не зная стоимости. У вас есть информация о том, каковы будут цены на этот продукт? - person Brandon Moore; 07.03.2013

sqlpackage.exe имеет возможность обнаруживать дрейф базы данных (т. е. изменения, внесенные с момента развертывания базы данных):

Параметры DriftReport. Действие отчета SqlPackage.exe создает XML-отчет об изменениях, внесенных в зарегистрированную базу данных с момента ее последней регистрации.

Это требует от вас регистрации базы данных при ее развертывании, но я не думаю, что это особенно важно.

Надеюсь, это поможет.

JT

person jamiet    schedule 03.04.2013

Вы можете сравнить свой проект базы данных (SSDT) ​​в качестве цели и «дрейфующую базу данных» в качестве источника, а кнопка «обновить» так же легко обновит вашу модель.

Другими словами, вы можете использовать сравнение схем, чтобы импортировать изменения в свой проект SSDT, а затем развернуться и опубликовать свою схему (с новыми внесенными изменениями) обратно в базу данных.

person Mark Sowul    schedule 18.09.2013