2

次の開発サイクルを使用して、新しい開発のために VS2010 データベース プロジェクトを試しています。

  • Management Studio を使用してローカル DB インスタンスに変更を加えます (デザイナーなどを使用)
  • VS2010 スキーマ比較を使用して、これらの変更を VSDB プロジェクトに同期/インポートします
  • VSDB プロジェクトをチェックインし、自動化されたビルド/テストなどを実行します

ソース管理から「最新のものを取得」したいときは、次のようにします。

  • ソース管理から VSDB プロジェクト ファイルを更新する
  • スキーマ比較を使用して、変更をプロジェクトからローカル データベース インスタンスにプッシュする

これが故障の始まりです... スキーマ比較は2 つのバージョンを同期しようとしているため、独自の機能開発の一環としてローカル データベースに加えた変更を元に戻そうとします。

明らかに、変更したオブジェクトへの変更をスキップするようにスキーマ比較を指示できますが、残念ながら、これは常に正しく機能するとは限りません。compare-behavior-sql-2008-database-projects .

基本的に、VSDB プロジェクトの定義がローカル データベースと自動的に同期されないため、問題が発生します。したがって、スキーマ比較を使用して、変更を取得するたびに「貧しい人々 のマージ」を行う必要があります。

考えられる解決策の 1 つは、次のとおりです。

  • スキーマ比較を使用して、最初にローカル DB から VSDB プロジェクトに変更を同期します
  • ソース管理から VSDB プロジェクトを更新します (したがって、スキーマ比較ではなく、ソース管理ツールを使用してマージを行います)。
  • スキーマ ソース管理からローカル DB インスタンスへの変更を比較する

...これは理想とはかけ離れています。

この点で、RedGate SQL ソース管理の方が優れていますか?

新しい 'Juneau' SQL ツールセットはどうですか?

4

4 に答える 4

1

'Deploy'を使用して、ソースの変更をデータベースにプッシュします。一番上の行の[ビルド]メニューから[ソリューションの展開]を選択するか、ソリューションエクスプローラーでプロジェクトを右クリックして[展開]を選択します。

デプロイは、プロジェクトのプロパティで構成できます。

HTH

于 2012-04-18T14:21:25.537 に答える
0

他の可能な解決策について言及したので、私たちのショップがデータ構造の変更と開発データベースへの伝播をどのように管理するかについて詳しく説明します。

違いを追跡して適用するために、データベース アクションをクラスに効果的に抽象化してアクション リストに追加する C# アプリを作成しました。エンジンは、データベースのバージョンを表すモジュールを動的にロードし、モジュール内の各項目をそのバージョンのアップグレードで実行するアクションのリストに追加してから、リストを処理します。アクションには、DataRowInsertAction、TableCreateAction、ColumnModifyAction などがあります。

このアプローチを使用する利点の 1 つは、標準の .cs ファイルを subversion にコミットできることです。ユーザーは、最新のものをチェックアウトして実行するだけで、独自の開発データベースを最新の状態に保つことができます。もう 1 つの大きな利点は、複数のデータベース エンジンをターゲットにできることです。これは、アクション自体が、どのデータベース エンジンがターゲットにされているかに基づいて、どの SQL をレンダリングするかを認識しているためです。


ちなみに、AdeptSQL を使用してデータベースを比較していますが、気に入っています。相違点の完全なリストが作成され、どちらの方向にも進むスクリプトを生成できます (データベース 'A' とデータベース 'B' が与えられた場合、A を B にアップグレードするか、B を A にダウングレードします)。

少額の追加料金で、データ差分も実行する拡張機能を提供します。

http://www.adeptsql.com/

于 2012-04-18T14:31:12.547 に答える
0

SQL ソース管理の背後にある考え方は、基本的には開発プロセスを完全に変えることです。データベース スクリプトを操作してデータベースに変更をプッシュする代わりに、データベースに変更を加えると、SQL ソース管理がデルタを計算し、ローカルを更新します。スクリプトを作成し、変更をソース管理システムにコミットできるようにします。

現在、SQL ソース管理は SQL Server Management Studio とのみ統合されていますが、VS 2010 で使用して SQL ソース管理とほぼ同じように機能する SQL Connect という VS パッケージが提供されています。http://www.red-gate.com/products/sql-development/sql-connect/index-2

于 2012-05-10T13:21:25.493 に答える
0

あなたのプロセスは後方にあるため、これは困難です。変更は VSDB からデータベースに流れるべきであり、その逆ではありません。これを試して:

  1. 必要に応じて Management Studio のデザイナーを使用しますが、加えた変更をスクリプト化して VSDB プロジェクトに追加します。
  2. スキーマ比較を使用する代わりに、組み込みの展開機能を使用します。これにより、ワンクリックで自動的にスクリプトが作成され、増分変更がローカル データベースに展開されます。
于 2012-04-18T14:45:29.443 に答える