web-dev-qa-db-ja.com

Visual Studio 2017のSQL Server比較スキーマ

同じサーバー上の2つのデータベースのスキーマを比較しようとしています。

2つのデータベースの名前はbenchmarkdbbenchmarkdb_dev

Visual Studio 2017では、[ツール]> [SQL Server]> [新しいスキーマ比較...]に移動します.

「ソースの選択」と「ターゲットの選択」というラベルの付いた両方のドロップダウンメニューから(下図を参照)、ソースとしてbenchmarkdbを選択し、bencmarkdb_devターゲットとして。

enter image description here

ソースをクリックして選択した後、「ソーススキーマの選択」がポップアップし、「接続の選択...」ボタンをクリックして、別のポップアップを表示しました。最新のポップアップ(下図の右側)には、比較しようとしている両方のデータベースが表示されています。

enter image description here

ただし、ソースまたはターゲットのいずれかを選択すると、すべてのポップアップが閉じますが、「ソースの選択...」または「ターゲットの選択...」ドロップダウンメニューには何も表示されません。実際、最初の写真のように見えることに戻ります。

データベース間のスキーマを比較できるように、これに対する解決策はありますか?

更新:

VS 2012、2015、2017でこれを試しました。すべてが同じ問題に直面しています。 VSソフトウェアとシステムソフトウェアは最新です。以下は、私が使用しているソフトウェアのいくつかのバージョンです。

Windows 7 Enterprise SP1

VS 2012、2015、および2017

SQL Server 2014

.NET Framework v4.7.02053

6
ccbadger

OK、それで私はそれをなんとか修正した。まず、MicrosoftページからSSDTをインストールする必要があります。 Googleで検索してください。インストーラーの起動時に(修正時に)個々のコンポーネントにもリストされていることを確認してください。必要なのはSQL Serverデータベースのみです(Integration Servicesなど3つから選択できます)。

次に、接続選択のために、スキーマ比較モーダルで「履歴から接続を削除」する必要があります。

この時点でVSを閉じて、接続がもう履歴にないことを確認しました。 VSを次回起動すると、履歴に問題のある接続が表示されないはずです。

接続を再作成し(「パスワードを記憶する」をチェックした)、出来上がり。スキーマ比較が機能します。

確かではありませんが、必死になって「Redgate ReadyRoll Core」、「Redgate SQL Prompt Core」、「Redgate SQL Search」もインストールしました。私はそれが重要だとは思わないが、他のすべてが失敗した場合...

編集:これは2台のマシンで動作し、VSバージョンに接続されていないようです。

7
Cubelaster

私は同じ問題を抱えていましたが、同じ根本原因があったかどうかはわかりません。

データベースをWindow Server上のSQL ServerからLinux Container上のSQL Serverに変更した後、問題が発生しました。スキーマ比較は私の選択を受け入れるように見えますが、データベースフィールドは実際には入力されず、比較を実行できませんでした。

問題を解決するために私がしなければならなかった2つのことがありました。

  1. Visual Studioを更新します(Visual Studio内の標準アップデーターを使用)。
  2. Visual Studio用のSQL Server開発ツール(SSDT)アドオンを、Linux上のSQL Serverをサポートするプレビューバージョンに更新します。そのダウンロードは利用可能です こちら

両方の更新を行った後、データベースを選択し、Windows上のSQL Serverで行っていたのとまったく同じように、プロジェクトとLinux上のSQL Serverの間でスキーマ比較を実行できました。

2
Andrew Pirkola