SQL-Schema-Vergleichsfehler "Ziel ist nicht verfügbar"


73

Beim Vergleich eines SQLServer-Projekts in Visual Studio 2015 Update 2 mit einer Datenbank SQL Server 2012 wird beim Ändern der Richtung der Fehler "Ziel ist nicht verfügbar" oder "Quelle ist nicht verfügbar" angezeigt.

Vor ein paar Monaten hat es richtig funktioniert. Gibt es eine Problemumgehung? Ich konnte keine finden.


In der Visual Studio Developer Community gibt es hierfür ein Problem: Developercommunity.visualstudio.com/content/problem/73094/… . Ich empfehle, das Problem zu verbessern, damit es bemerkt und behoben wird.
Sam

Es ist 2019 und immer noch ein Problem in VS2015 und VS2017. Antwort von Sam hat nicht geholfen. Antwort von sotn half aber nur einmal. Das Erstellen eines neuen temporären DB-Benutzers war ein letzter Ausweg.
user5226582

Antworten:


122

Ich habe festgestellt, dass die Verwendung von Benutzername @ Servername als Benutzername für die Verbindung das Problem behebt, wenn es mit Azure-Datenbanken auftritt. Ich hatte Verbindungen, die historisch funktioniert haben, ohne dass dies plötzlich aufhörte, und dann hat dies das Problem für mich behoben.

Wenn ich beispielsweise ein Login von mylogin verwende und eine Verbindung zu myserver.database.windows.net herstelle , wird das Problem "Quelle ist nicht verfügbar" nicht angezeigt , wenn ich stattdessen mylogin@myserver.database.windows.net als Benutzernamen verwende.


2
Das war großartig. Monate der Frustration gelöst!. Ich fand, dass es nur mit Benutzername @ myserver funktioniert. Ich musste den Teil database.windows.net nicht bereitstellen.
raubt

Hey @robs, zuerst habe ich das Gleiche getan und nicht die vollqualifizierte Serveradresse verwendet. Ich stellte fest, dass das Problem nach einer Weile wieder auftrat, als ich es tat, und deshalb habe ich diesen Beitrag so bearbeitet, wie ich es getan habe. Denken Sie daran, dass Sie bei einem erneuten Auftreten des Problems möglicherweise zum vollständigen Servernamen wechseln müssen.
Stacy Vicknair

Du bist ein Genie!
Mark

Arbeitete heute für mich an VS2017.
Etienne Juneau

Ich hatte Probleme mit username@myserver.database.windows.net(ich habe endlose Eingabeaufforderungen zur Azure SQL-Firewall erhalten, obwohl meine Client-IP in Azure Portal aufgeführt ist). Als ich es auf username@myserver(ohne database.windows.net) änderte, funktionierte es wieder. Seltsam.
Dai

84

Ich erhalte diesen Fehler in Visual Studio 2017, wenn ich die SQL Server-Authentifizierung verwende, aber das Kennwort nicht speichere. Ich habe diese Schritte mit Visual Studio 15.6.3 und SQL Server 12.0.5000.0 getestet

Behebung des Fehlers

Dies behebt das Problem, aber das Problem tritt beim nächsten Neustart von Visual Studio erneut auf.

  1. Gehen Sie zu Extras -> SQL Server -> Neuer Schema-Vergleich ...
  2. Wählen Sie entweder Quelle auswählen oder Ziel auswählen
  3. Wählen Sie Verbindung auswählen
  4. Suchen Sie unter Letzte Verbindungen alle Verbindungen, bei denen dieser Fehler aufgetreten ist
  5. Klicken Sie für jede dieser Optionen mit der rechten Maustaste auf die Verbindung und wählen Sie Aus Verlauf entfernen
  6. Starten Sie Visual Studio neu

Verhindern, dass der Fehler erneut auftritt

  1. Vollständige Behebung des obigen Fehlers
  2. Wenn Sie die Verbindungsdetails festlegen, aktivieren Sie das Kontrollkästchen Kennwort speichern.

Fehler reproduzieren

Wenn Sie diesen Fehler beheben möchten, habe ich ihn folgendermaßen reproduziert.

  1. Gehen Sie zu Extras -> SQL Server -> Neuer Schema-Vergleich ...
  2. Wählen Sie eine Quell- und Zielverbindung aus
  3. Verwenden Sie für mindestens eine Verbindung die SQL Server-Authentifizierung , wählen Sie jedoch nicht Kennwort speichern aus
  4. Drücken Sie Vergleichen
  5. Stellen Sie sicher, dass es fehlerfrei funktioniert
  6. Starten Sie Visual Studio neu
  7. Wiederholen Sie die Schritte 1 bis 4 mit genau denselben Verbindungsdetails

Dank dessen konnten wir das s **** Schema im Vergleich zu 2015 vergleichen. Danke @Sam!
Jack Frost

Brillant! Hat für mich gearbeitet. Ich hatte festgestellt, dass das Nicht-Speichern des Kennworts bedeutet, dass das zwischengespeicherte Verlaufselement "nicht gespeichert" bleibt, selbst wenn Sie versuchen, das Kontrollkästchen erneut zu aktivieren, es jedoch nicht entfernen. Vielen Dank!
PCDEV

Dies funktionierte fast wie angegeben für mich, nachdem Sie die Fehlerliste korrigiert und VS erneut geöffnet hatten. Mein gesamter Verlauf war erneut angezeigt und eine nachfolgende Verbindung schlug erneut fehl. Was funktionierte (zumindest diesmal) war, den gesamten Verlauf zu entfernen und dann sofort wieder eine Verbindung herzustellen, ohne den Dialog zu schließen. Leider vermute ich, dass ich in ein oder zwei Wochen wieder auf diese Frage zurückkommen werde ...
Matt

Cool, hatte nicht erwartet, dass dies wirklich helfen würde, aber es funktioniert, Thnx .. Bearbeiten - Meins war VS 2015. ..
Irfaan

1
Diese Lösung funktionierte perfekt für mich mit VS 2017. +1
Roberto

27

Nachdem ich hier alles ausprobiert habe, hat das für mich funktioniert:

  1. Schließen Sie die VS-Instanz.

  2. Löschen Sie die gespeicherten Verbindungsschlüssel in

HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0 \ ConnectionMruList

  1. Öffnen Sie VS erneut und versuchen Sie es erneut.

Ich hatte das gleiche Problem mit der Quellverbindung: "Quelle ist nicht verfügbar" Diese Schritte haben den Fehler für mich sofort behoben.
David Alpert

Ich habe auch das gleiche Problem und diese Schritte haben den Fehler behoben. Danke vielmals.
Hitesh Patel

1
Zu Ihrer Information, das Löschen der Verbindungsschlüssel hat mein Problem in VS 2017 behoben.
Dave Mason

3
Ich verwende VS 2017 (15.6), der ConnectionMruListRegistrierungsschlüssel existiert nicht einmal. Weiß jemand, wohin es gebracht wurde?
Sam

3
Hat bei mir mit VS2017 nicht funktioniert, der Schlüssel wurde in keinem der 14.0x- oder 15.0x-Ordner gefunden
pcdev

18

Die anderen Antworten funktionierten nicht für mich, da ich SQL Server direkt und nicht Azure verwendete. Nachdem ich jedoch die erweiterten Eigenschaften der Verbindungszeichenfolge überprüft hatte, stellte ich fest, dass die Authentifizierung auf "Nicht angegeben" gesetzt war und die Netzwerkbibliothek leer war.

Ich habe sie geändert und es hat wieder funktioniert. Ziemlich seltsam, da ich die Datenbank für die Verbindung auswählen konnte. Ich würde einfach keine Schemas vergleichen können, die die erwähnte Meldung "Quelle ist nicht verfügbar" enthalten.

Sql


4
Das hat bei mir ungefähr dreimal funktioniert, und jetzt bin ich wieder bei Quadrat 1. Ich muss eine Kombination aus 1) Schließen von VS, 2) Löschen der MRU-Liste in der Registrierung und 3) obenem machen.
LarryBud

@ LarryBud Das hat bei mir funktioniert, aber ich denke, wir sollten mehr Hintergrundinformationen zum Löschen der MRU und für Visual Studio 2015
David Rogers am

2
Dies ist gerade in VS2017 wieder passiert. Die Authentifizierungskombination bleibt nicht länger "hängen" und wird bei jedem Öffnen der Verbindung zurückgesetzt. Diesmal funktionierte es für mich, die Verbindung aus der Liste zu entfernen, eine andere Verbindung auszuwählen und dann die tatsächlich gewünschte Verbindung wieder hinzuzufügen.
Kuffs

Das Entfernen und erneute Hinzufügen der Verbindung funktionierte auch für mich
Shaun Rowan

Dies funktionierte auch für mich in VS2017, ABER mit einer Einschränkung musste ich einen zweiten Benutzer auf dem DB-Server erstellen und diesen für das Ziel verwenden. Wenn Sie 2 Datenbanken vergleichen, die sich auf demselben Server befinden, müssen Sie anscheinend zwei separate Benutzernamen und Kennwörter verwenden. Dies bedeutet, dass Sie Windows Auth nicht verwenden können, da dies immer über Ihre Desktop-Anmeldung erfolgt. Sie müssen SQL Auth verwenden . In meinem Fall habe ich das SA-Konto in der Quelle und den Web-App-Benutzer im Ziel betrogen und verwendet.
Shawty

12

Für mich war es das \Symbol am Ende der IP-Adresse des Servers in dem server nameFeld, das das Problem behoben hat. Sehr eigenartig.

zB anstatt 10.10.10.10ich schreibe 10.10.10.10\und es verbindet sich ok.

Hinweis: Ich verwende Visual Studio 2017.


Dies funktionierte zunächst, aber nach dem Neustart von Visual Studio trat das Problem erneut auf.
Sam

2

Ich habe gemischte Ergebnisse mit den anderen Antworten hier gehabt. Ich habe eine Vergleichsdatei zum Speichern verwendet, die ein anderer Entwickler zusammengestellt hat. Dies ist ein eigenständiger SQL Server und keine Azure-Datenbank. Der Vergleich würde manchmal funktionieren und nicht bei anderen (die Angabe des Ziels ist ein nicht verfügbarer Fehler). In meinem Fall verwendete der gespeicherte Vergleich nur den Servernamen und keinen vollqualifizierten Domänennamen. Als ich zu einem FQDN wechselte, funktionierte es für mich. Ich bin nicht sicher, ob das Problem erneut auftritt, dachte aber, ich würde diese Informationen hinzufügen, falls sie für andere nützlich sind.


OK. Jetzt habe ich wieder das gleiche Problem. Ich wünschte, es gäbe hier eine Art Protokollierung, um Ihnen das Problem mitzuteilen, da der Server / die Datenbank eindeutig verfügbar ist.
Mike

Erhielt den Fehler mit dem Servernamen und dem FQDN. Ich habe gerade die IP-Adresse ausprobiert und es hat funktioniert. Anscheinend eine Art Servername-Caching-Problem. Das Durcheinander mit dem Servernamen (oder das Hinzufügen eines alternativen Namens) kann dies für Personen beheben.
Mike

1
Diesmal schlug es erneut fehl, aber dann entfernte ich den Verlauf, startete VS neu und fügte die Verbindung erneut hinzu (mit einem Einzelfallunterschied für einen Brief), und das funktionierte. Dies ist eine großartige Funktion, aber es wird ein wenig nervig, dieses Problem
Mike

2

Einige Lösungen auf dieser Seite haben zwar manchmal für mich funktioniert, aber nicht immer. Aber diese Methode, die ich beschreibe, funktioniert meistens für mich

Wenn Sie Ihren Servernamen angeben, geben Sie das Protokoll und den Port wie folgt an

Servername: TCP: Mein Servername, 1443

Mein Servername ist Azure BTW


1

Ich hatte diesen Fehler beim Öffnen einer zuvor gespeicherten .scmp-Datei, die beim ersten Erstellen erfolgreich funktionierte.

Das Problem wurde durch ein fehlendes Kennwort in der gespeicherten Verbindungszeichenfolge verursacht. Die Quelle verwendete eine integrierte Authentifizierung, daher beschwerte sich VS nicht darüber.

Das erneute Auswählen der Zielverbindung hat nicht geholfen, wahrscheinlich weil VS die zwischengespeicherte Verbindungszeichenfolge verwendet hat.

Ich habe das Problem gelöst, indem ich das PasswordArgument in die Verbindungszeichenfolge in der Datei eingefügt habe. Es gibt zwei Stellen, an denen die Zielverbindungszeichenfolge angegeben wird (XPaths unten gezeigt):

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

Nach diesen Änderungen habe ich die .scmp-Datei erneut geöffnet und der Vergleich wurde erfolgreich ausgeführt.


Ich versuche, diese Antwort zu verwenden, kann diese Standorte jedoch nicht finden. Sind das Verzeichnispfade?
Ron C

Diese Pfade sind XPATHs in der .scmp-Datei. Ich habe es versucht und es hat mein Problem nicht gelöst. Kann aber für andere funktionieren.
Mike

1

Ich habe die Visual Studio Professional-Version 2015 ausprobiert und habe dieses Problem zum Zeitpunkt des SQL-Datenvergleichs erhalten. Es hat bei mir funktioniert, wenn ich den Hostnamen anstelle der IP-Adresse der Datenbanken verwende. Hoffe, dies wird das Problem beheben.


Es ist unklar, ob dies etwas mit der gestellten Frage zu tun hat. Es könnte besser gewesen sein, die Frage zu kommentieren. Wenn Sie nicht genügend Wiederholungen haben, um Kommentare abzugeben, lesen Sie auf der Tour nach, wie Sie Wiederholungen erhalten.

0

Ein Prozess blockierte die Datenbank. Nach dem Ausführen eines Kill [Spid] funktionierte es wieder.



0

Ich bezog mich über IP auf SQL Server und gab mir dieses Problem. Ich habe über den DNS-Namen darauf verwiesen und das Problem wurde gelöst!

Nicht sicher warum! Es hat jedoch so funktioniert :)


0

Ich kann es zum Laufen bringen, wenn ich mit der rechten Maustaste auf den Datenbanknamen im Fenster SQL Server Object Explorer klicke und dort Schema Compare auswähle. Wenn ich versuche, das Schema-Vergleichsfenster zu verwenden, das über das Menü Extras geöffnet wird, funktioniert es nie.


0

Ich hatte tatsächlich das gleiche Problem in VS Studio 2015. Da sich die Datenbank jedoch auf meinem PC befand, verwendete ich localhost anstelle des tatsächlichen Namens des Computers. Ich habe den Computerserver einfach wie im Vorschlag von Visual Studio selbst ausgewählt und es hat funktioniert.


0

Keine der hier gegebenen Antworten hat für mich funktioniert; Ich verwende SQL Server und Visual Studio 2017. Ich konnte einen Vergleich erzwingen, indem ich die IP-Adresse des Servers zu meiner Hosts-Datei hinzufügte und dann diesen Hostnamen im Verbindungsfeld verwendete.


0

In meinem Fall habe ich gerade meinen Computer neu gestartet und es hat gut funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.