3

Visual Studio 2010 でスキーマ比較機能が改善されることを期待していました。いくつかあると思いますが、基本的なものを動作させることができません。SQL Server 2005 データベースからスキーマを吸い込みました。次に、正常に機能していることを確認するために、データベースをソースとして選択し、スキーマ プロジェクトをターゲットとして選択してスキーマ比較を行いました。それらは同期していました。「スキップしないオブジェクト」のみを表示するようにフィルタリングすると、オブジェクトはリストされません。これは、スキーマが実際に一致していることを示しています。

次に、いくつかのスキーマ変更がデータベースにプッシュされました (Visual Studio 経由ではなく、外部から)。これらの変更の結果を取得したかったので、別のスキーマ比較を行いました。ここでもデータベースをソースとして選択し、プロジェクトをターゲットとして選択しました。いくつかの変更が正しく検出されました。ただし、プロジェクトに「更新を書き込んで」スキーマ比較をやり直しても、まだ変更がリストされています。スキーマの比較と更新の作成を続けています。それらは成功したように見えますが、後続のスキーマ比較では常に同じ変更と思われるものがリストされます (書き込みが失敗したかのように)。ただし、出力ウィンドウには成功メッセージしか表示されません。

Target database synchronization has started.
Analyzing comparison results
Looking for modified catalog or server options
Finding dropped objects in the project system
Finding modified objects in the project system
Ready to process comparison results
Modifying scripts for objects that have changed or have been deleted
Adding new objects to the project system
Target schema was updated successfully. To compare the schema again, click Refresh.

さらに、「異なる定義」としてリストされているオブジェクトをクリックして、「オブジェクト定義」ウィンドウでこれらのオブジェクトのスキーマを表示すると、左右のペインに表示されている内容に目に見える違いは見当たりません。スキーマ比較オプションをチェックしたところ、空白を無視していることに注意してください。

何か案は?

4

3 に答える 3

1

VS 2008 で同様の問題が発生しました。問題のルートは、プロジェクトが SQL Server 2005 プロジェクトとして設定されていたが、ターゲット サーバーが実際には SQL Server 2008 であったことです。

于 2010-09-10T20:27:55.997 に答える
1

私は今日これを行っていますが、空白の無視がオンになっているにもかかわらず、タブやリターンなどを無視していません。テキストをコピーしてwinmergeに貼り付け、空白の表示をオンにすると、(おそらく空白ではない)違いがわかりました。

§¶

キーコード alt-20 および alt-21

于 2011-06-16T16:41:04.863 に答える
1

それはいくつかの非常にあいまいな設定を比較します-ロックエスカレーション設定が2つのテーブルで異なることがわかりました。SSMS GUIを使用して、テーブルのプロパティでのみ見つけることができました。

私はそれが同様に探す他のまったくあいまいな設定があると思います.....

于 2010-06-30T10:06:36.457 に答える