手を使ってデータベースの変更管理は、[閉じた]スクリプトを生成しました
-
19-09-2019 - |
質問
私の必要性はかなり基本的であると私は、車輪を再構築する必要はありません。私は、スクリプト私のデータベースをしたいと、次のすなわち001-作成-tables.sqlに1つのバージョンから、それを更新するためのスクリプトを書かれている002-変更-column.sqlなど
私が欲しいのは、データベースが(いくつかのテーブルの規則を使用して)であるバージョンを確認するデータベースを見て、現在よりも高い数値を持っているフォルダ内のすべてのスクリプトを実行するシンプルなツールのコマンドラインまたはMSBuildのですデータベースのバージョン。私もそれが失敗した場合/エラーをスローし、その時点で停止スクリプトをロールバックするためのツールたいと思います。
それは私が好きだろうが、私は自分のSQLスクリプトを書きたいんが、私は私の規約を変更する気にしないものです。また、私はあまり必要としないようなツールが無料またはオープンソースになりたいです。 私のプロジェクトは、C#であるため、私は、ツールが.NETで構築さを好むだろう。
解決 7
OKので、私はそこにあるオプションのいずれかを好きではなかったです。私は、データベース内のバージョンを追跡し、新しいスクリプトを実行しますスクリプトが、何を作成するには、いくつかの良いツールを見つけました。とにかく、私は先に行って、仕事を得るために私自身のオープンソースツールを巻か。あなたがそれを使用したい場合はCodePlexのからその KissDB に呼び出された場合、あなたはダウンロードすることができます。また、私は私のブログ<のhref =「http://blog.runxc.com/post/2009/11/18/Announcing-Kiss-Database-Change-Management.aspx」のrel =」で、それについてのブログ記事を投げましたnoreferrer nofollowを "> blog.RunXc の
他のヒント
あなたはをまだオープンDBDiffで見たことがありますか?これは、開始するには良い場所かもしれません。
あなたは、オープンソースについてのあなたの心を変更する場合は、、レッドゲートのSQLは、 IMO移動するための方法である。
試してみてくださいdbdeploy.NET
SQLRunner のSourceForgeで呼ばれるかなり興味深いプロジェクトがあります - それはC#のだ、それは.NETだ、それはです過去の "プレアルファ" :-)
私はそれを自分自身を使用していませんでしたが、それでも - IMHO、かなりよさそうだ。
。マルク
このは、プレーンでシンプルな、タフな問題です。他の回答で述べたツールは間違いなく助けることができますが、あなたはまだ多くを自分で行うには左だ。
私は実際に(私の問題/バグ追跡システムにケース番号が一致する)各変更スクリプトのためのIDを格納し、私のスキーマ内のテーブルを持っています。各変更スクリプトの終わりに私は、そのテーブルにIDを挿入します。私は、データベースの任意の特定のインスタンスで行われているものかどうかをチェック別のスクリプトを持っています。まだ実行されていないスクリプトをそれぞれ実行を自動化することが可能だろうが、私は何かがうまくいかない場合は、手動で変更スクリプトを実行するのが好きです。
ロールバックは、多くのスキーマの変更は、データ移行のいくつかの並べ替えを必要と特に以来、ほとんど不可能です。私は、スキーマの変更とベストプラクティスは、彼らは後方互換性にするためにであることを見出しました。 (少なくとも最初は)カラムまたはテーブルの名前を変更することはありません。唯一のものを追加し、すべての新しいがNULL可能で追加します。あなたは何かがかなり右ではありません実現する場合、ロールバックスクリプトは、単純に、新しいものを削除します。もちろん、古い、未使用の列とテーブルで終わるので、あなたは、古いものを取り除く、あなたの現在のリリースが安定したとみなされた後に実行される2番目のスクリプトを書きます。
私はあなたがあなたに多くの柔軟性を与えるSQL Server 2005のTableDiffユーティリティに。いくつかの使用例は、見つけることができますここを
フォルダ内の特定のバージョンのスクリプトのすべてを持っている場合は、そのフォルダに入れた場合、あなたはバッチファイルとしてこれを実行することができます:
for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X" >> ResultBatch.txt
申し訳ありませんが、私はからこれを得たところ、私は覚えていないか、私は信用を与えるでしょう。
私たちは、開発者はSubversionのにデータベース変更スクリプトを確認しています。すべてのスクリプトは、再現されているので、あなたは、エラーなしでそれらを複数回実行することができます。我々はまた、我々は、必要に応じて設定変更をバック保持できるように、アイテムやバグIDを発行する変更スクリプトをリンクします。私たちは、その後、適切にソートされた変更のすべてを備えた単一のSQLスクリプトファイルを蹴る自動ビルドプロセスを持っています。この単一のファイルは、その後のテスト、QAおよび本番環境への変更を促進するために使用されます。これは、企業の開発者との最良のアプローチだと思います。我々はここでを行う方法についての詳細はあなたのご意見をいただければ幸いですします。
LiquiBaseをを使用してください。これは、しかしJavaのです。
はい、あなたはあなたの選択のSQLバリアントに移行スクリプトを書くことができます。
これは、十分にテストし、多くの人々によって使用されます。