web-dev-qa-db-ja.com

SQLサーバーストアドプロシージャをバージョン管理する最良の方法は何ですか?

データベースオブジェクトをバージョン管理する最良の方法は何ですか?私はVisual Studio 2005/2008とSQL Server 2005を使用しています。SVNで使用できるソリューションを希望します。

63
Vijesh VP

他のコードと同じように、アプリケーションソリューションに「データベースプロジェクト」を追加し、そこにデータベースオブジェクトを構築するために使用されるsqlファイルを保持します。これらのコードファイルには、アプリケーションの場合と同じバージョン管理を使用してください。

33
Ron Savage

RedGateが提供するツールをご覧ください。 SPを含むSQL Serverオブジェクトのバックアップ/復元/比較のケースを特に扱います。別の方法としてはわかりませんが、Visual Studioではspをリポジトリにチェックインできると思います。 Haventはそれを自分で試しました。しかし、RedGateツールはお勧めできます。彼らは私にたくさんのトラブルを救いました

15
Thomas Wagner

すべてのテーブル/ sproc /関数ソース管理にSVNを使用しています。

ニーズを満たすものが見つからなかったため、SVNで使用するNiceディレクトリ構造にコードをダンプできるように tility を記述しました。

興味のある方は、ソースを svn://finsel.com/public/VS2005/GenerateSVNFilesForSQL2005 で入手できます。

5
Josef

Subversionを使用します。Subversionプロジェクトのディレクトリにsqlコードを保存し、準備ができたらリポジトリにコードをコミットして、そこから既に作業を開始する前にリポジトリから更新します。

本当のトリックは、開発者にそうするよう説得することです。私たちのdbasは、Subversionに定期的に保存されていないストアドプロシージャ(または他のデータベースオブジェクト)を削除することでそれを行います。一度物を失うと、ほとんど誰もそれを再びしません。

3
HLGEM

最良の方法-あなたのために働くもの。

最も簡単な方法-現在存在しない方法。

半手動方式を使用します(ソース管理下のスクリプト、smallストアドプロシージャを運用サーバーに展開できる人々のサブセット、スキーマの変更は基礎となるチェックインファイルの変更に反映されます)。

shouldで行うことは、ある種のソース管理とプレーンテキストスキーマダンプdiffを実装することです...しかし、ほとんどの場合は本当に手間がかかりますが、一般的には「機能します」。

1
Unsliced

事前にパッケージ化されたソリューションを知りません、申し訳ありません...

...しかし、データベースに接続し、すべてのストアドプロシージャをディスクにテキストファイルとして保存する小さなスクリプトはできませんか?次に、スクリプトは「svn add」へのシステムコールを行うことにより、すべてのテキストファイルをSVNリポジトリに追加します。

次に、おそらく別のスクリプトをDBに接続し、すべてのストアドプロシージャを削除し、ディスクからすべてのリポジトリストアドプロシージャをロードする必要があります。このスクリプトは、「svn up」を実行し、新しい/変更されたストアドプロシージャがあるたびに実行する必要があります。

これがMS SQLで実現できるかどうかはわかりませんが、MySQLがこれに対応できると確信しています。これを行うためのSVN拡張機能の作成が複雑すぎる場合、 Capistrano はチェックイン/チェックアウトスクリプト、IIRCをサポートします。

1
paxos1977

可能であれば、データベースプロジェクトを使用して、アプリケーションソースとともにデータベースをバージョン管理する必要があることに同意します。

ただし、エンタープライズシナリオの場合は、ツールを使用してサーバー上の変更を追跡し、それらの変更をバージョン管理することも検討する必要があります。データベースプロジェクトが存在するからといって、一部の管理者や開発者がサーバー上のこれらのsprocを変更できないわけではありません。

1

スキーマのダンプにバーサプレックスを使用します: http://code.google.com/p/versaplex/

VersaplexにはSchemamaticが付属しており、データベーススキーマ(テーブル、SPなど)とデータ(データはCSVとしてダンプされます)を読み取ります。私はSVNとgitでそれを使用していますが、それは素晴らしいです:)私に知らせて助けが必要な場合は、試してみる価値があります! http://github.com/eduardok/versaplex

0
Eduardo

http://scriptdb.codeplex.com/ からscriptdb.exeを使用しています

そして、Rails way: http://code.google.com/p/migratordotnet/wiki/GettingStarted を使用すると便利かもしれません。

0
Andreas Rehm

平文へのダンプを行い、VCSに保存します。

同様のことを行うために、バックアップとコミットをスクリプト化できます。

0
Oli