2009-05-14 12 views
3

製品のバージョン間でアップグレードスクリプトを維持する最も良い方法は何ですか?顧客が製品のバージョン3を開始してバージョン5に行く場合、バージョン3と5の間のデータベーススキーマの違いが解決されるように、顧客用のアップグレードスクリプトを生成する最善の方法は何ですか?お客様のSQLアップグレードスクリプトの生成

答えて

0

私は完全にあなたのデータベース構造と新しいバージョンが持っている新機能によると思う。新しいバージョンが旧バージョンと大きく異なる場合は、ETLというSQLスクリプトではなくアップグレードを実行するプロセスが必要な場合があります。

0

バージョン管理は、dbdeployまたはruby rake migrationと同様の方法で行うことができます。各更新スクリプトに順番に番号を付け、すでに実装されているすべてのスクリプト番号を格納するテーブルをデータベースに作成します。

アップグレードツールは、データベースにすでに実装されている数よりも高い数のスクリプトを適用するだけです。

続きを読むhere

3

これは前に何度も議論されました:

How to automatically upgrade deployed database for end-users

Database Deployment Strategies (SQL Server)

Any SQL Server 2008 Database Change Management (MIgrations) Tools Available?

Migrator.netは、これらの質問で好ましいアプローチであると思われます。私はそのアプローチのように行いますが、あなたの場合は単純である場合には、このように、バージョン番号を持つテーブルの変更を実行するためにSQLを保管することを好むかもしれません:

create table upgradetable (major int, minor int, revision int, change text) 

をしてから、実行するスクリプトを取得することができます

select change from upgradetable where major > (select major from versiontable) 

(味に合わせて調整します)。

あなたは私が

1

をmigrator.netお勧めします、その場合にはSQLを介したすべてのアップグレードを行うことができない場合、これは動作しませんが、それが収まるかどうかを確認するためにWizardbyを試してみてください。それはマイグレーションを書くための特別なDSLを持っています、それは自動的にダウングレードスクリプトを生成し、バージョンを追跡するので、コードを書く必要はありません。

プログラムでアップグレードする場合は、thisを参照してください。

0

実際、これはかなり簡単です。
標準コードリポジトリでの分岐と同様に、次の操作を実行できるソース管理戦略があります。
a。特定のポイントでデータベース構造のブランチを作成します。 (v3/v4)。
b。特定のバージョンにデータベースを復元するには、そのブランチを使用します。 (すなわち、v3またはv4)。
c。v3からv4、v3からv5に移行する一連のパッチスクリプトを作成します。
d。これらのパッチを顧客に出荷する前にテストしてください。

このようにして、データベースの複数のバージョンをサポートし、テスト済みのアップグレードパスを提供することができます。

DBSourceTools(http://dbsourcetools.codeplex.com)を参照してください。特にパッチ適用の方法があります。
このツールを使用すると、特定のポイントでデータベースをベースラインにし、名前付きバージョン(v1)を作成できます。
次に、展開ターゲットを作成し、名前付きバージョンをv2に増やします。
最後に、パッチ・スクリプトをパッチ・ディレクトリーに追加して、スキーマまたはデータに対する変更を加えます。

これは、v1からv2に適用されるすべてのパッチをテストする反復可能なプロセスです。
DBSourceToolsには、これらのスクリプト(スキーマ比較ツールまたはスクリプトデータツール)の作成を支援する機能もあります。

完了したら、パッチディレクトリ内のすべてのファイルをクライアントに送信するだけです。

楽しんでください。