同じサーバー上の2つのデータベースのスキーマを比較しようとしています。
2つのデータベースの名前はbenchmarkdb
とbenchmarkdb_dev
。
Visual Studio 2017では、[ツール]> [SQL Server]> [新しいスキーマ比較...]に移動します.
「ソースの選択」と「ターゲットの選択」というラベルの付いた両方のドロップダウンメニューから(下図を参照)、ソースとしてbenchmarkdb
を選択し、bencmarkdb_dev
ターゲットとして。
ソースをクリックして選択した後、「ソーススキーマの選択」がポップアップし、「接続の選択...」ボタンをクリックして、別のポップアップを表示しました。最新のポップアップ(下図の右側)には、比較しようとしている両方のデータベースが表示されています。
ただし、ソースまたはターゲットのいずれかを選択すると、すべてのポップアップが閉じますが、「ソースの選択...」または「ターゲットの選択...」ドロップダウンメニューには何も表示されません。実際、最初の写真のように見えることに戻ります。
データベース間のスキーマを比較できるように、これに対する解決策はありますか?
更新:
VS 2012、2015、2017でこれを試しました。すべてが同じ問題に直面しています。 VSソフトウェアとシステムソフトウェアは最新です。以下は、私が使用しているソフトウェアのいくつかのバージョンです。
Windows 7 Enterprise SP1
VS 2012、2015、および2017
SQL Server 2014
.NET Framework v4.7.02053
OK、それで私はそれをなんとか修正した。まず、MicrosoftページからSSDTをインストールする必要があります。 Googleで検索してください。インストーラーの起動時に(修正時に)個々のコンポーネントにもリストされていることを確認してください。必要なのはSQL Serverデータベースのみです(Integration Servicesなど3つから選択できます)。
次に、接続選択のために、スキーマ比較モーダルで「履歴から接続を削除」する必要があります。
この時点でVSを閉じて、接続がもう履歴にないことを確認しました。 VSを次回起動すると、履歴に問題のある接続が表示されないはずです。
接続を再作成し(「パスワードを記憶する」をチェックした)、出来上がり。スキーマ比較が機能します。
確かではありませんが、必死になって「Redgate ReadyRoll Core」、「Redgate SQL Prompt Core」、「Redgate SQL Search」もインストールしました。私はそれが重要だとは思わないが、他のすべてが失敗した場合...
編集:これは2台のマシンで動作し、VSバージョンに接続されていないようです。
私は同じ問題を抱えていましたが、同じ根本原因があったかどうかはわかりません。
データベースをWindow Server上のSQL ServerからLinux Container上のSQL Serverに変更した後、問題が発生しました。スキーマ比較は私の選択を受け入れるように見えますが、データベースフィールドは実際には入力されず、比較を実行できませんでした。
問題を解決するために私がしなければならなかった2つのことがありました。
両方の更新を行った後、データベースを選択し、Windows上のSQL Serverで行っていたのとまったく同じように、プロジェクトとLinux上のSQL Serverの間でスキーマ比較を実行できました。