1

FMを使用してデータベースをデプロイしています。その展開の一環として、ビューを展開しています。変更は次のようになります。

R1:ビューを作成

R2:表示に変更はありません

R3:ビューに列を追加します

R4:変更なし

R5:ビューから列を削除します

ビューは、ソース管理にあるスクリプトによって作成されます。R3をデプロイしてから、R2にロールバックすることを決定したとします(奇妙な状態のままにしたくない本番サイトを考えています)。したがって、ビューのスクリプト(ドロップ/作成)はローカルファイルにあります。ローカルバージョンがR3にあるため、そのスクリプトを再度使用することはできませんが、R1(またはR2)に戻したいと思います。

FluentMigratorを使用してビューを以前のバージョンに確実にロールバックするにはどうすればよいですか?私が考えることができる唯一のオプションは、Migrationクラスの文字列にビュー作成スクリプトを保持することです。しかし、クラスではすべてのバージョンを文字列にまとめる必要があるようです。非常に扱いにくく、チームに売り込むのは難しいことです。

私が考えることができるこれに対するすべての現実的な解決策は、ソース管理の考えに反します-ローカルに単一のバージョンを持ち、時間の経過とともにその変化を追跡します。

4

2 に答える 2

1

この機能をFluentMigratorに追加しました-ソースから直接スクリプトを実行する機能。あなたはここでそれを得ることができます:

https://github.com/jcollum/fluentmigrator

現在、SVNのみをサポートしています。まだメインブランチに統合されていません。

于 2011-06-03T20:50:15.380 に答える
0

非常に簡単な方法の1つは、次のようなことを行うことです。

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

ここで、そのビューを変更する必要がある場合は、このスクリプトに変更を加えてデプロイします。ビューが存在する場合はドロップし、新しく作成します。ソース管理の観点からは、テキストファイルに変更を加えるだけなので、テキストファイルを効率的に保存したり、違いを簡単に確認したりできます。つまり、ソース管理のすべてのことを実行できます。それは単なるテキストなので、本当にうまくいきます。

于 2011-05-15T22:35:59.167 に答える