2

私はアプリを構築するかなり初期の段階にあり、1000 年代に販売されることを期待しています。数百になる可能性が高いですが、いずれにせよ、データベース スキーマの変更について十分な規模の頭痛の種を引き起こすには十分すぎるほどです。

多くのお客様が、私が構築しているアプリを Web サーバーでセルフホスティングし、サーバーにインストールされた余分なビットがうまくいかず、常に数が存在するため、私はむしろ Windows / .net / SQL サーバー環境に制限されています。苦情の/結果として失われたビジネス。Pythonで実行されるため、sqlalchemyは廃止されました。

私が求めているのは、アプリケーションのバージョン間で簡単に移行できるツールです。migrator.net を見つけて、以前に使用したことはありますが、開発チームは年に 1 度しか作業していないようで、実際のプロジェクトではないように見えるため、実際に使用したことはありません。

どのような代替アプローチが利用可能ですか?

更新 これを継続的インテグレーション環境で使用できるようにしたいということを忘れていたので、データ男とSQL比較は素晴らしいGUIツールですが、私は本当に自動化しています。

4

4 に答える 4

2

Visual Studio 2010 Ultimate/Premium Edition または Visual Studio Team/Database Edition 2008 を使用している場合は、Visual Studio で必要なものがすべて見つかります。

2 つのデータベース (dev と prod など) を比較し、データを変更するための SQL スクリプトを生成できます。比較からいくつかのテーブルまたはいくつかの列を簡単に除外できます。結果を調べて、スクリプトの生成から一部のエントリを除外することもできます。したがって、データベースの変更の展開に使用できるスクリプトを簡単かつ柔軟に生成できます。2 つのデータベースのデータを構造から別々に比較できます(スキーマ比較)。「データ」メニューに移動し、「スキーマ比較」または「データ比較」を選択するだけです。http://msdn.microsoft.com/en-us/library/dd193250.aspxおよびhttp://msdn.microsoft.com/en-us/library/dd193261.aspxを読むことができますそれがどのように機能するかを理解するために。そのため、prod からのデータで dev のデータを更新したり、prod データベースを最新バージョンの dev データベースに変更するスクリプトを生成したりできます。

この機能は、Vinsual Studio Team Edition 2008 で使い始め、Visual Studio 2010 Ultimate でも引き続き使用しています。それはまさに私が必要としているものです。場合によっては、スクリプトを少し変更する必要がありますが、仕事の 95% は Visual Studio で行われます。

VS2010 Ultimate または Premium を使用できず、VS2008 Team または Database Edition を使用できない場合は、http://www.red-gate.com/ (http://www.red-gate.com など)の製品を検討することをお勧めします。 /products/SQL_Compare/index.htm ) に近い機能を使用します。

于 2010-09-13T19:30:55.520 に答える
2

Red_Gate の SQl Compare は、2 つのデータベースの同期を維持するのに適しています。

ただし、重要なことは、ソース管理の変更を特定のバージョンで保持することだと思います。バージョンに属する他のコードと同様に、SQL コードを扱います。開発者が GUI を使用して変更を加えることを決して許可しないでください。すべての変更はスクリプト化して、バージョンの一部としてソース管理に入れる必要があります。誰かがバージョン 1 を使用していて、バージョン 2.3 にアップグレードしたい場合は、バージョンごとに sript を順番に実行するだけで、バージョン 2.3 のデータベースが作成されます。

于 2010-09-13T19:36:38.363 に答える
1

アップグレード スクリプトをアプリケーションに追加します。とにかくそれがない場合は、データベースの現在のスキーマ バージョンを格納する設定テーブルを作成します。例:

CREATE TABLE SETTINGS(KEY VARCHAR(255), VALUE VARCHAR(255));
INSERT INTO SETTINGS VALUES('version', '1');

アプリケーションの起動時に、このテーブルをクエリして (存在しない場合は、以前のバージョンがインストールされていません)、バージョンを確認します。バージョン 1 からバージョン 2 への個別のアップグレード スクリプトのみを維持します。バージョン 2 から 3; 3から4など。バージョン 1 から 3 などのアップグレード スクリプトを直接維持することはありません。通常は必要ありません。通常、アップグレード スクリプトには ALTER TABLE および CREATE TABLE ステートメントが含まれますが、場合によっては UPDATE も含まれます。

于 2010-09-13T17:57:37.930 に答える
0

SQL Compare のプロ バージョンには、継続的な統合に使用できるコマンド ラインがあります。これはここに文書化されています: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

これを最大限に活用するために、スキーマをソース管理で維持するのが理想的です。これは、SQL Source Controlを使用して行うことができます。

SQL Compare は 2 つの特定のデータベース間で移行できますが、ソース管理はより成熟した開発プロセスを提供します。

これで探しているものが得られない場合は、この「回答」にコメントしてください。

于 2010-10-26T20:44:19.130 に答える