web-dev-qa-db-ja.com

SQLスキーマ比較エラー「ターゲットが利用できません」

Visual Studio 2015 Update 2のSQLServerプロジェクトをデータベースSQL Server 2012と比較すると、方向を変更すると「ターゲットが利用できません」または「ソースが利用できません」というエラーが表示されます。

数か月前は正常に機能していました。回避策はありますか?何も見つかりませんでした。

67
dave

接続用のユーザー名としてsername @ servernameを使用すると、Azureデータベースに対して発生する問題が修正されることがわかりました。私はこれを突然停止することなく歴史的に機能していた接続を持っていましたが、これは私のためにそれを修正しました。

たとえば、myloginのログインを使用してmyserver.database.windows.netに接続する場合、代わりに[email protected]を使用します。 netユーザー名として「ソースが利用できません」という問題は発生しません。

118
Stacy Vicknair

SQL Server認証を使用するときにパスワードを保存しないと、Visual Studio 2017でこのエラーが発生します。 Visual Studio 15.6.3およびSQL Server 12.0.5000.0でこれらの手順をテストしました

エラーを修正する

これで問題は解決しますが、次回Visual Studioを再起動すると問題が再発します。

  1. ツール-> SQL Server-> 新しいスキーマ比較...に移動します
  2. ソースの選択またはターゲットの選択のいずれかを選択します
  3. 選択接続の選択
  4. 最近の接続で、このエラーを発生させたすべての接続を見つけます
  5. これらのそれぞれについて、接続を右クリックして履歴から削除を選択します
  6. Visual Studioを再起動します

エラーが再発しないようにする

  1. 完了エラーの修正上記
  2. 接続の詳細を設定するときは、パスワードを保存するチェックボックスをオンにします。

エラーを再現する

このエラーのトラブルシューティングを行う場合は、次の方法で再現できます。

  1. ツール-> SQL Server-> 新しいスキーマ比較...に移動します
  2. ソース接続とターゲット接続を選択します
  3. 少なくとも1つの接続に対して、SQL Server認証を使用します-do n't select Remember Password
  4. 比較を押します
  5. エラーなしで動作することを確認します
  6. Visual Studioを再起動します
  7. まったく同じ接続の詳細を使用して、手順1〜4を繰り返します。
73
Sam

ここですべてを試した後、これは私のために働いたものです:

  1. VSインスタンスを閉じます。

  2. 保存された接続キーを削除します

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\ConnectionMruList

  1. VSを再度開き、再試行してください。
25
sotn

AzureではなくSQL Serverを直接使用していたため、他の回答は機能しませんでしたが、接続文字列の詳細プロパティを確認した後、認証が「指定なし」に設定され、ネットワークライブラリが空であることがわかりました。

私はそれらを変更し、再び機能しました。接続するデータベースを選択できるため、むしろ奇妙です。前述の「ソースが利用できません」というメッセージが表示されるスキーマを比較することはできません。

Sql

16
Kuffs

私にとっては、\フィールドのサーバーのIPアドレスの末尾にあるserver nameシンボルがそれを修正しました。非常に奇妙な。

例えば10.10.10.10の代わりに10.10.10.10\と書いて、接続します。

注:Visual Studio 2017を使用しています。

10
knr

ここで、他の回答と結果が混在しています。別の開発者が作成した保存比較ファイルを使用していました。これはスタンドアロンのSQL Serverであり、Azureデータベースではありません。比較は時々機能し、他では機能しません(ターゲットを使用できないというエラーが発生します)。私の場合、保存された比較はFQDNを使用せず、サーバー名のみを使用していました。 FQDNに変更すると、うまくいきました。問題が再び発生するかどうかはわかりませんが、他の人に役立つ場合にこの情報を追加すると思いました。

1
Mike

以前に保存された.scmpファイルを開くときにこのエラーが発生しましたが、最初に作成されたときに正常に機能していました。

この問題は、保存された接続文字列にパスワードがないために発生しました。ソースは統合認証を使用していたため、VSはそれについて不満を述べていませんでした。

おそらくVSがキャッシュされた接続文字列を使用したため、ターゲット接続を再度選択しても役に立ちませんでした。

ファイルの接続文字列にPassword引数を追加することで問題を解決しました。ターゲット接続文字列が指定される場所は2つあります(以下に示すXPath)。

  • /SchemaComparison/TargetModelProvider/ConnectionBasedModelProvider/ConnectionString
  • /SchemaComparison/SchemaCompareSettingsService/ConfigurationOptionsElement/PropertyElementName[Name='TargetConnectionString']

これらの編集後、.scmpファイルを再度開き、比較を正常に実行しました。

1
Dark Daskin

私はIP経由でSQLサーバーに言及していましたが、この問題を教えてくれました。 DNS名で参照し、問題は解決しました!

なぜかわからない!ただし、次のように機能しました:)

0
Evan Camilleri

実際、VS studio 2015でも同じ問題が発生しました。しかし、データベースがPC上にあるため、実際のコンピューター名ではなくlocalhostを使用していました。 Visual Studio自体の提案のようにコンピューターサーバーを選択しましたが、うまくいきました。

0
esdras

ユーザーがスキーマ比較操作を実行するために必要な権限を持っていない場合、同じ問題が発生します https://msdn.Microsoft.com/en-us/library/jj889462(v = vs.103).aspx

0
AdvanTiSS

2015 Visual Studio Professionalバージョンで試してみましたが、SQLデータの比較時にこの問題が発生し、データベースのIPアドレスの代わりにホスト名を使用するとうまくいきました。これが問題に対処することを願っています。

[SQL Serverオブジェクトエクスプローラー]ウィンドウでデータベース名を右クリックし、そこから[スキーマ比較]を選択すると、機能するようになります。 [ツール]メニューから開く[スキーマ比較]ウィンドウを使用しようとしても、機能しません。

0
user9791281

プロセスがデータベースをブロックしていました。 kill [spid]を実行した後、再び機能しました。

0
dave