2009-12-02 3 views
3

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

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

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

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

ответ

7

я использую базы данных расширенные свойства см Version Control and your Database:

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 
+1

Прохладный – Murph

2

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

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

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

3

Прикрепите таблицу версий, ее простую, эффективную и для прошлого, erm, ну, более 10 лет он работал для меня.

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

0

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

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

Здесь вы можете найти некоторые хранимые процедуры, которые существенно снижают сценарии обновления усилий письма: (! Узнали что-то новое) How to Maintain SQL Server Database Schema Version