1. ホーム
  2. sql-server

[解決済み】SQL Serverデータベースのバージョン管理はどうやるの?

2022-03-26 19:14:05

質問

データベースをバージョン管理下に置きたいのですが、どうすればいいですか?

私は常に、少なくとも いくつか のデータが含まれています。 アルム は、ユーザータイプや管理者について言及しています)。また、パフォーマンス測定のために、生成されたテストデータの大規模なコレクションを必要とすることもよくあります。

データベースにバージョン管理を適用するには?

どのように解決するのですか?

Martin Fowlerは、このテーマについて私のお気に入りの記事を書いています。 http://martinfowler.com/articles/evodb.html . 私は、スキーマダンプをバージョン管理下に置かないことにしています。 アンバランス というのも、私は本番用データベースを簡単にアップグレードしたいからです。

Webアプリケーションで、本番用のデータベースインスタンスを1つ持つ場合、私は2つのテクニックを使用します。

データベースアップグレードスクリプト

スキーマをバージョンNからN+1に移行するために必要なDDLを含む一連のデータベースアップグレードスクリプトです。 (これらはバージョン管理システムに格納されます。) _version_history_ テーブルのようなものです。

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

は、アップグレードスクリプトが実行されるたびに、新しいバージョンに対応する新しいエントリを取得します。

これにより、どのバージョンのデータベーススキーマが存在するかを簡単に確認でき、データベースのアップグレードスクリプトの実行が一度だけになるようにします。 繰り返しますが、これらは ではなく データベースのダンプを行います。 むしろ、各スクリプトは 変更点 あるバージョンから次のバージョンに移行するために必要なものです。 これらは、本番データベースに適用して、アップグレードするためのスクリプトです。

開発者用サンドボックスの同期化

  1. 本番用データベースをバックアップ、サニタイズ、シュリンクするためのスクリプトです。 本番用DBをアップグレードするたびに実行します。
  2. 開発者のワークステーションにバックアップを復元する(必要に応じて微調整を行う)ためのスクリプトです。 各開発者は、本番用DBをアップグレードするたびにこのスクリプトを実行します。

注意:私の自動テストはスキーマは正しいが空のデータベースに対して実行されるので、このアドバイスがあなたのニーズに完全に合うとは限りません。