RedGateとVisual Studioのデータベースプロジェクトの両方を試しましたが、データベースプロジェクトにデータベース定義を保存することを好みます。データベースがソリューションの一部になるとすぐに、好みのソース管理プロバイダーを使用できます。ほとんどは優れたVisual Studio統合を備えています。
SSDTツールを使用すると、データベース定義の「最新バージョン」が得られるため、スキーマの比較を簡単に行い、スキーマアップグレードスクリプトを生成できます。
ただし、スキーマは通常、赤道の一部にすぎません。実際には、データベースにはすでに大量のデータがあることがわかります。そして、私のユーザーは、彼らがそれを失うとき、むしろ失望する傾向があります。
したがって、v1.0をリリースするとすぐに、アップグレードスクリプトを維持する必要が生じます。これらには単にスキーマの変更が含まれていることもありますが、多くの場合、他のテーブルのコンテンツに基づいてデフォルトを作成する必要があり、データをシードするまで特定の制約を解除する必要があります。私の好みは、これらのアップグレードスクリプトをデータベースプロジェクトの別のフォルダーに置くことです。これらは通常「v1.0からv1.1へのアップグレード」のように見えます。
データベースには常に現在のバージョン番号を示す参照テーブルがあるため、互換性のないアップグレードをブロックできます。アップグレードスクリプトの最初のステートメントは、現在のバージョンを確認し、予想と異なる場合は救済します。
データベースプロジェクトのもう1つの利点は、同じスキーマに基づいてさまざまなデータセットを展開できることです。開発用、QAチーム用、ユーザー受け入れテスト用、および自動統合テスト用の異なるデータセットがあります。データベースプロジェクトには展開後スクリプトを1つしか含めることができないため、ここでのコツは、「マスター」プロジェクトを参照する新しいデータベースプロジェクトを作成し、カスタムデータセットをそのプロジェクトの展開後プロセスの一部にすることです。
これらは私の2セントでした。あなたが出てくるプロセスが何であれ、何よりも、あなたとあなたのチームに合っていなければならず、できれば一般的なタスクのほとんどであなたをサポートしなければなりません。