Управление версиями и обновление схемы базы данных SQL Server - PullRequest
3 голосов
/ 02 декабря 2009

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

Я хочу иметь возможность обновлять старую версию до новейшей без установки промежуточных версий. Например. Предположим, у меня есть версия A (самая старая), B (промежуточная) и C (новая версия). Я хочу иметь возможность обновлять версию A прямо до версии C. Для файлов приложений это просто, я просто заменяю старые на новые. Однако для базы данных я не хочу создавать сценарий SQL для изменения схемы базы данных с прямой A на C, вместо этого я хочу сначала применить сценарий для изменения схемы с A на B и с B на C.

Как сохранить версию базы данных для базы данных SQL Server? Есть ли какое-то специальное свойство, которое я могу установить вместо реализации таблицы версий? В моем коде (.NET) я хочу прочитать версию базы данных и, соответственно, выполнить сценарии обновления SQL в правильном порядке.

Я буду использовать как SQL Server 2005, так и SQL Server 2008.

Ответы [ 4 ]

7 голосов
/ 02 декабря 2009

Я использую расширенные свойства базы данных, см. Контроль версий и ваша База данных :

SELECT [value] 
    from ::fn_listextendedproperty (
        'MyApplication DB Version', 
        default, default, default, default, default, default);

...

EXEC sp_updateextendedproperty 
    @name = N'MyApplication DB Version', @value = '1.2';
GO
3 голосов
/ 02 декабря 2009

Вставьте таблицу версий, она проста, эффективна, и в прошлом, ну, вот уже более 10 лет она приносит мне удовольствие.

Я написал это в ответ на другой вопрос здесь

2 голосов
/ 02 декабря 2009

Это зависит от используемой вами версии SQL Server.

Я не верю, что версия базы данных является встроенным свойством базы данных, однако вы, вероятно, можете использовать расширенное свойство.

Лично я бы создал свою собственную таблицу версий, поскольку это позволит вам связать с ней больше метаданных.

0 голосов
/ 24 октября 2013

Вы можете добавить таблицу, которая регистрирует текущую версию. Затем запустите все сценарии обновления, но сценарии должны быть написаны таким образом, чтобы они не выполнялись, если текущая версия превышает версию, ожидаемую сценарием.

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

Здесь вы можете найти некоторые хранимые процедуры, которые значительно сокращают усилия по написанию сценариев обновления: Как поддерживать версию схемы базы данных SQL Server

...