複数のファイルシステムがあります
ほとんどのバージョン管理ツールは、ローカル ディスク ファイル システムで動作します。
オブジェクトを識別するテキスト名があり、この名前を使用して作成スクリプトを取得または少なくとも生成できる限り、ほとんどのリレーショナル データベース システムのデータベース オブジェクトはファイル システムに存在します。
しかし、これはローカル ディスク ファイル システムではないため、ローカル ディスク ファイル システムで厳密に動作する CVS や SVN などのツールからは見えません。
SVN をデータベース オブジェクトに適用するには、オブジェクトをローカル ディスク ファイル システムに複製し、ローカル ディスク ファイル システムへの変更をデータベースに複製する必要があります。
さまざまな使用モード
各開発者がプライベートな作業コピーを保持するソース コードとは異なり、開発者は、ネットワーク上のどこかにあるサーバー上の共有データベースで作業する傾向があります。Visual Studio はマウント オン デマンドのプロジェクト ローカル データベースのコピーを直接サポートしていますが、変更をマージするための便利で信頼できる方法がないため、開発者はこの機能を避けてきました。
ただし、データベース構造への変更が CVS や SVN などのコピー/マージ バージョン管理システムによって管理されると、伝播とマージはほとんど自動化され (バーの競合)、データベースを共有する理由はなくなります。
オプションとして SCC を除外する
Microsoft SQL Management Studio は、SCC 仕様を実装するすべてのバージョン管理をサポートしています。Microsoft は VSS (blech) のみをリストしていますが、Google は多数のオプションを明らかにしています。ただし、SCC はすべてロックに関するものであり、ダブルブリーチです。
ファイルシステム間の複製
全体の問題は、ファイル システム間のレプリケーションの 1 つに発展します。CodePlex には VS2005/SQL2005 の実装が含まれていますが、VS2008/SQL2008 では機能しません。
この時点で、「これをどのように行うべきか」という根底にある問題は十分に解決されたと思いますが、ポイントを与える方法はわかりません.
関係者の皆様、ご応募ありがとうございました。
いくつかの具体的な疑問が生じますが、主にさまざまなタイプのスキーマ オブジェクトをスクリプト化する方法に関するものです。
- の依存関係順に抽出
create
してalter
スクリプト を作成する方法- テーブル
- 見る
- ストアド プロシージャ
- 関数
- 引き金
- 索引
- 外部キー
- 依存関係の順序でテーブル作成スクリプトを抽出する方法
- スキーマへの変更を効率的に検出する方法 (トリガーがない場合は、
sys.objects
ポーリングが必要になります。これは、高速で安価な方がよいでしょう)
変化の検出
ポリシーを使用してアクションをスキーマの変更にバインドできることに気付きました。依存関係の順序付けと、テーブル作成ステートメントをスクリプト化する方法の問題が残っています