3

私たちのプロジェクトには、いくつかの本番データベースと多くの開発者がいます。各本番データベースは、いくつかの「サブプロジェクト/ローカリゼーションバージョン」を表します。SQLServer2008を使用しています。

したがって、MSVisualStudioデータベースプロジェクトを使用してデータベースのバージョン管理戦略を開発する必要があります。データベースのバージョニングとデータベースプロジェクトに関する多くの記事を読みましたが、まだ多くの質問があります。

  1. 開発者はdbプロジェクトへの変更をどのように実装する必要がありますか?(ベストプラクティス)

  2. 人間の介入(一部のオブジェクトのスキップ、一部の変更の書き換えなど)なしで、100%実行可能な「最新バージョン」のデプロイスクリプトを生成するにはどうすればよいですか?

  3. MS Visual Studioデータベースプロジェクトでデータの変更を管理するにはどうすればよいですか?デプロイ前/デプロイ後のスクリプトについては知っていますが、この問題を解決できないと思います。(例:あるテーブルを別のテーブルに再マップする必要があります)。

「理想的な解決策」は次のとおりです。

  1. 開発者は、データベース[ProductionDB]のデータベースプロジェクトを生成および保守します。

  2. 新しいリリースでは、必要なすべての変更を加えて、データベースプロジェクトを[ProductionDB]にデプロイします。

  3. 開発者はデータベースプロジェクトを変更し、具体的な変更のためにいくつかのデータ操作スクリプトを作成します。

  4. 新しいリリースでは、必要なすべての変更を加えて、データベースプロジェクトを[ProductionDB]にデプロイします。

それで、最後の質問:上記の目的でデータベースプロジェクトを使用することは可能ですか、それとも誰かが同様のシナリオ/ソリューションを使用しますか?

PS:私はすでに次の議論を読みました:

  1. データベースのバージョン変更のバージョン管理[クローズ]
  2. MS SQLデータベースをSVNでバージョン管理するにはどうすればよいですか?
  3. データベースのバージョン管理のためのソリューションを探しています
  4. データベース構造変更のためのバージョン管理システムはありますか?
4

4 に答える 4

2

データベースプロジェクトは、ここで述べたほとんどの理由で正確に使用されます-

  1. 開発者は、データベーススクリプトファイルをチェックアウトし、変更を加えて、再度チェックインするだけです。開発データベースに直接存在するオブジェクトではなく、.sqlファイルを変更することに注意してください。したがって、データベーステーブルに2つの列を追加する必要がある場合は、このテーブルのテーブル作成スクリプトを変更し、このテーブルの変更スクリプトを記述しないでください。

  2. ターゲットの古いバージョンのDBスキーマがある場合は、最新のファイルを使用してこのプロジェクトをそのデータベースにデプロイするだけで、デプロイメントスクリプトが作成されます(必要なalterステートメントを使用)。'deploy'時に、デプロイメントスクリプトをdbに対しても実行するかどうかを選択できるプロジェクト設定があります。

  3. 展開スクリプトは、prodコピーに対して個別にテストされ、パッチとしてprodに適用される成果物にすることができます。

データ操作スクリプトについてはよくわかりませんが、他のすべての目的では、データベースプロジェクトは完璧です。

于 2010-11-09T20:28:35.300 に答える
2

あなたが説明したことは、データベース プロジェクトが存在する理由です。

質問に答えるには:

  1. それは開発者次第です。Visual Studio で作業してプロジェクト ファイルを直接編集するか、Mgmt Studio でデータベースのライブ コピーを編集し、VS でスキーマ比較を使用して変更をプロジェクトに同期することができます。私はそれを数か月間使用しており、どちらも問題なく動作することがわかりましたが、プロジェクト ファイルを直接編集することが多いです。

  2. 最初に宛先データベースをドロップするボックスをチェックすると、プロジェクトをデプロイすると最新バージョンが生成されます。ビルド中に VSDBCMD を呼び出すことで、人間の介入なしで実行できます

  3. 展開前/展開後のスクリプトは、あなたが暗示していることだけを目的としています。例として、テーブルからすべてのデータを選択して一時テーブルに入れ、展開前に切り捨て、プロジェクトにスキーマの移行を処理させてから、展開後に元に戻すことができます。ややこしいかもしれませんが、この問題を解決するのは決して簡単ではありません。

お役に立てれば。

于 2010-11-09T21:30:13.947 に答える
0

このワークフローを実装しようとするオープンソースのbsnModuleStoreツールキットを確認することをお勧めします(実際にはそれ以上のことも行います)。

于 2010-12-09T00:41:02.943 に答える
0

データの問題は解決が難しい問題です。ここ Red Gateでは、VS データベース プロジェクトと類似するSQL ソース管理ツールについて、これを求める多くのリクエストがありました。良いニュースは、これに対するサポートを積極的に追加していることです。クリスマス前に試してみる早期ビルドが必要です。興味がある場合は、http://www.surveymk.com/s/SqlSourceControl_EapSignup でアーリー アクセス通知にサインアップしてください。フィードバックをお待ちしております。

于 2010-11-14T19:23:16.137 に答える