質問

私は VS2008 で構築された Web アプリケーションの開発の初期段階にあります。私はデスクトップ PC (ほとんどの作業をここで行う) とラップトップ (時折持ち運ぶため) の両方を持っており、プロジェクト コードの同期を維持するために AnkhSVN を使用しています。開発データベース (SQL Server Express) の同期を維持するための最良の方法は何ですか?

SVN に VS データベース プロジェクトがあり、スキーマが変更されたときに再生成する作成スクリプトが含まれています。当初のアイデアは、何かが変更されるたびに DB を再作成することでしたが、それはすぐに面倒になってきました。また、データが適切に表示されることを確認するために入力したサンプル行もすべて失われます。

.MDF ファイルと .LDF ファイルをソース管理下に置くことを検討していますが、SVN Update を実行してファイルがファイルの下から取り出され、新しいコピーに置き換えられた場合、SQL Server Express が適切に処理してくれるとは思えません。たとえそれが単なる使い捨ての開発データベースであっても、いくつかの大きなバイナリ ファイルをソース管理に貼り付けることは、エレガントな解決策とは思えません。助言がありますか?

役に立ちましたか?

解決

データベースの CREATE スクリプトに加えて、デフォルトのデータまたはサンプル データのスクリプトも維持してみてはいかがでしょうか。

これは、2 年以上保守してきたアプリケーションの増分バージョンに対して採用してきたアプローチであり、非常にうまく機能しています。デフォルトのデータ スクリプトを使用すると、QA テスターが同じデータを使用してバグを再現できるようになります。

私が少し前に投稿した質問もご覧ください。

SQL変更スクリプトを自動生成するための最適なツール

他のヒント

これにアプローチするには明らかに多数の方法があるため、構築するためのより良い基盤を提供するリンクをいくつかリストします。これらは、私が過去に他の人を時流に乗せようとしたときに参照したリンクです。

ただし、そうは言っても、何らかの種類のバージョン管理 (手動または半自動) を実装するほど熱心ではないと思われる場合は、次の点を確認することを強くお勧めします。

聖なる牛よ!生活を楽にすることについて話しましょう。プロジェクトが私から離れてしまい、複数の人がスキーマ変更を行う必要があり、複数の環境を同期しておく必要がありました。Red Gate 製品を 2 つのデータベースに向けて違いを確認し、それらを同期することは簡単でした。

.MDF および .LDF ファイルではなく、データベースのバックアップ (.bak ファイル) を保存できます。
次のスクリプトを使用してデータベースを簡単に復元できます。

use master
go

if exists (select * from master.dbo.sysdatabases where name = 'your_db')
begin
    alter database your_db set SINGLE_USER with rollback IMMEDIATE
    drop database your_db
end

restore database your_db
from disk = 'path\to\your\bak\file'
with move 'Name of dat file' to 'path\to\mdf\file',
     move 'Name of log file'  to 'path\to\ldf\file'
go

上記のスクリプトをテキスト ファイルrestore.sqlに配置し、次のコマンドを使用してバッチ ファイルから呼び出すことができます。

osql -E -i restore.sql

そうすることで、プロセス全体を自動化するスクリプト ファイルを作成できます。

  • SVNリポジトリまたは適切なストレージから最新のDBバックアップを入手してください
  • bakファイルを使用して現在のデータベースを復元します

私たちは、上位の環境からバックアップを取得するという組み合わせを使用します。
ApexSql を使用してスキーマの初期設定を処理するだけでなく。
最近では、変更スクリプトを取得するコード化されたソース管理された CI 経由の実行方法として、サブソニック マイグレーションが使用されています。また、テキサスのヘッドスプリングによって開発された「タランティーノ」プロジェクトもあります。

これらのアプローチのほとんど、特に後者は、ほとんどのテスト データに対して安全に使用できます。私が特に気に入っているのは、自動化された最後の 2 つです。変更を加えることができ、次回誰かが最新版を入手したときに、「アップデーター」を実行するだけで最新版に誘導されるからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top