6

私のニーズはかなり基本的なものであり、ホイールを再構築したくありません。私は自分のデータベースをスクリプト化するのが好きで、あるバージョンから次のバージョンに更新するためのスクリプトを書きました。つまり、001-create-tables.sql、002-alter-column.sql などです。

私が欲しいのは、単純なツール コマンド ラインまたは MsBuild です。これは、データベースを調べて、データベースのバージョンを確認し (いくつかのテーブル規則を使用して)、現在のデータベース バージョンよりも大きい番号を持つフォルダー内のすべてのスクリプトを実行します。また、スクリプトが失敗した場合やエラーがスローされた場合にスクリプトをロールバックして、その時点で停止するツールも必要です。

それが私が望んでいることですが、独自のSQLスクリプトを書きたいのですが、慣習を変更してもかまいません。また、あまり必要としないので、ツールを無料またはオープンソースにしたいと考えています。私のプロジェクトは C# であるため、ツールを .Net に組み込むことをお勧めします。

4

9 に答える 9

6

Open DBDiffはもう見ましたか? 始めるには良い場所かもしれません。

オープン ソースについて気が変わった場合は、Red Gate の SQL Compareが IMO への道です。

于 2009-11-12T16:34:06.787 に答える
2

dbdeploy.NET を試す

http://sourceforge.net/projects/dbdeploy-net/

于 2009-11-12T16:33:26.290 に答える
1

これは難しい問題で、単純明快です。他の回答で言及されているツールは間違いなく役立ちますが、それでも自分で多くのことを行う必要があります.

私は実際にスキーマに、各変更スクリプトの ID を格納するテーブルを持っています (これは、問題/バグ追跡システムのケース番号と一致します)。各変更スクリプトの最後に、ID をそのテーブルに挿入します。データベースの特定のインスタンスで何が行われたかを確認する別のスクリプトがあります。まだ実行されていない各スクリプトの実行を自動化することは可能ですが、何か問題が発生した場合に備えて、変更スクリプトを手動で実行するのが好きです。

特に多くのスキーマ変更には何らかのデータ移行が必要なため、ロールバックはほとんど不可能です。スキーマを変更する際のベスト プラクティスは、下位互換性を持たせることです。列またはテーブルの名前を変更しないでください (少なくとも最初は)。追加するだけで、すべての新しい追加を null 可能にします。ロールバック スクリプトは、何かが正しくないことに気付いた場合に、単純に新しいものを削除します。もちろん、古い未使用の列とテーブルが残るため、現在のリリースが安定したと見なされた後に実行される 2 つ目のスクリプトを作成し、古いものを取り除きます。

于 2009-11-13T11:26:28.987 に答える
1

SourceForge にはSQLRunnerという非常に興味深いプロジェクトがあります。これは C# であり、.NET であり、「プレ アルファ」を過ぎています :-)

私はそれを自分で使用したことはありませんが、それでも-かなり良さそうです。

マルク

于 2009-11-12T16:43:36.690 に答える
0

開発者にデータベース変更スクリプトをSubversionにチェックしてもらいます。すべてのスクリプトは繰り返し可能であるため、エラーなしで複数回実行できます。また、変更スクリプトをリンクしてアイテムまたはバグIDを発行し、必要に応じて変更セットを保留できるようにします。次に、すべての変更が適切にソートされた単一のSQLスクリプトファイルを開始する自動ビルドプロセスがあります。次に、この単一のファイルを使用して、テスト、QA、および本番環境への変更をプロモートします。これは、エンタープライズ開発者にとって最善のアプローチであると考えています。私たちがそれをどのように行うかについての詳細はここにあり ますあなたのフィードバックをいただければ幸いです

于 2010-09-16T00:59:39.420 に答える
0

わかりましたので、そこで見つけたオプションはどれも好きではありませんでした。スクリプトを作成するための優れたツールをいくつか見つけましたが、データベース内のバージョンを追跡して新しいスクリプトを実行するツールは見つかりませんでした。とにかく、私は先に進み、仕事を成し遂げるために独自のオープン ソース ツールを開発しました。使用したい場合は、CodePlex からKissDBと呼ばれる場合にダウンロードできます。また、私のブログblog.RunXcでそれについてのブログ投稿を投げました。

于 2009-11-19T15:29:06.340 に答える
0

すべてのスクリプトを自分で作成したい場合は、SQL Server 2005 の TableDiff ユーティリティを利用すると、柔軟性が大幅に向上します。いくつかの使用例はここにあります

于 2009-11-12T16:56:07.803 に答える
0

If you have all of your scripts for a given version in a folder, you can run this as a batch file if you place it in that folder:

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

Sorry, I don't remember where I got this from or I would give credit.

于 2009-11-12T16:59:04.947 に答える
0

リキベースを使用。Javaだけど。

はい、選択した SQL バリアントで移行スクリプトを作成できます。

十分にテストされ、多くの人々によって使用されています。

于 2013-12-23T21:36:37.583 に答える