откатить представление к предыдущей версии того же представления - PullRequest
1 голос
/ 16 мая 2011

Я использую FM для развертывания базы данных.Как часть этого развертывания, я выкатываю представление.Изменения выглядят так:

R1: создание представления

R2: без изменений для просмотра

R3: добавление столбца к представлению

R4:без изменений

R5: удалить столбец из представления

Представление создается сценарием, который находится в системе управления версиями.Допустим, я развернул R3, а затем решил, что мне нужно откатиться на R2 (я имею в виду производственную площадку, которую я не хочу оставлять в нечетном состоянии).Таким образом, скрипт вида (drop / create) находится в локальном файле.Я не могу использовать этот скрипт снова, потому что локальная версия находится на R3, но я хочу, чтобы он вернулся на R1 (или R2).

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

Каждое реалистичное решение, которое я могу придумать, противоречит идее управления исходным кодом - иметь единственную версию вещи локально и отслеживать ее изменения во времени.

Ответы [ 2 ]

1 голос
/ 04 июня 2011

Я добавил эту функцию в FluentMigrator - возможность выполнять скрипт прямо из исходного кода. Вы можете получить его здесь:

https://github.com/jcollum/fluentmigrator

В настоящее время поддерживается только SVN. Еще не был интегрирован в основную ветку.

0 голосов
/ 16 мая 2011

Один очень простой способ - сделать что-то вроде:

if (object_id('dbo.myView', 'V')) is not null
   drop view [dbo].[myView]
go
create view [dbo].[myView] as

select foo, bar
from dbo.Orders

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

...