データベース オブジェクトをバージョン管理する最良の方法は何ですか? Visual Studio 2005/2008 と SQL Server 2005 を使用しています。SVN で使用できるソリューションを希望します。
10 に答える
他のコードと同じように、「データベース プロジェクト」をアプリケーション ソリューションに追加し、そこにデータベース オブジェクトの構築に使用する sql ファイルを保持します。これらのコード ファイルには、アプリケーションと同じバージョン管理を使用してください。
RedGate が提供するツールを見てください。特に、SP を含む SQL Server オブジェクトのバックアップ/復元/比較のケースを扱います。または、よくわかりませんが、Visual Studio では sp をリポジトリにチェックインできると思います。自分で試したことはありません。しかし、RedGate ツールはお勧めできます。彼らは私をたくさんのトラブルから救ってくれました
私はすべてのテーブル/sproc/関数ソース管理にSVNを使用しています。
自分のニーズを満たすものが見つからなかったので、SVNで使用するためにコードを素敵なディレクトリ構造にダンプできるユーティリティを作成することになりました。
興味のある方は、ソースがsvn://finsel.com/public/VS2005/GenerateSVNFilesForSQL2005で利用できるようになりました。
私たちは Subversion を使用しており、SQL コードを Subversion プロジェクトのディレクトリに保存し、準備ができたらコードをリポジトリにコミットし、リポジトリから更新してから、既にそこにあるものに取り組み始めるだけです。
本当の秘訣は、開発者にそうするよう説得することです。私たちのデータベース管理者は、Subversion にないストアド プロシージャ (または他のデータベース オブジェクト) を定期的に削除することでこれを行います。一度物を失うと、二度とそれをする人はほとんどいません。
最善の方法-あなたのために働くもの。
最も簡単な方法-現在存在しない方法。
半手動の方法を使用します(ソース管理下のスクリプト、ストアドプロシージャを運用サーバーにデプロイできる少数のユーザー、スキーマへの変更は、基になるチェックインファイルへの変更に反映する必要があります)。
私たちがすべきことは、ある種のソース管理と平文スキーマのダンプ差分を実装することです...しかし、それはほとんどの場合本当に面倒ですが、一般的には「私たちのために機能します」。
事前にパッケージ化されたソリューションについては知りません。申し訳ありません...
...しかし、データベースに接続し、すべてのストアド プロシージャをテキスト ファイルとしてディスクに保存する小さなスクリプトを作成できませんでしたか? 次に、スクリプトは「svn add」へのシステム コールを作成して、すべてのテキスト ファイルを SVN リポジトリに追加します。
次に、別のスクリプトで DB に接続し、すべてのストアド プロシージャを削除し、ディスクからすべてのリポジトリ ストアド プロシージャをロードする必要があるでしょう。このスクリプトは、「svn up」を実行し、新しい/変更されたストアド プロシージャがあるたびに実行する必要があります。
これが MS SQL で実現できるかどうかはわかりませんが、MySQL がこれに対応できると確信しています。これを行うための SVN 拡張機能を作成するのが複雑すぎる場合、Capistranoはチェックイン/チェックアウト スクリプト、IIRC をサポートしています。
可能であれば、データベース プロジェクトを使用して、アプリケーション ソースと共にデータベースをバージョン管理する必要があることに同意します。
ただし、エンタープライズ シナリオの場合は、ツールを使用してサーバー上の変更を追跡し、それらの変更をバージョン管理することも検討する必要があります。データベース プロジェクトが存在するからといって、一部の管理者や開発者がサーバー上のこれらの sproc を変更できないわけではありません。
スキーマのダンプには versaplex を使用してください: http://code.google.com/p/versaplex/
Versaplex には、データベース スキーマ (テーブル、SP など) とデータ (データは CSV としてダンプされる) を読み取る Schemamatic が付属しています。私は SVN と git で使用していますが、素晴らしいです :) 助けが必要な場合は、私に知らせてください。試してみる価値があります! http://github.com/eduardok/versaplex
http://scriptdb.codeplex.com/の scriptdb.exe を使用しています。
また、レールの方法を使用すると便利な場合があります: http://code.google.com/p/migratordotnet/wiki/GettingStarted
プレーンテキストにダンプし、VCS に保持します。
バックアップとコミットをスクリプト化して、同様のことを行うことができます。