web-dev-qa-db-fra.com

Erreur de comparaison de schéma SQL "La cible n'est pas disponible"

Lorsque vous comparez un projet SQLServer dans Visual Studio 2015 Update 2 à une base de données SQL Server 2012, le message d'erreur "La cible n'est pas disponible" ou "La source n'est pas disponible" lors du changement de sens.

Cela fonctionnait correctement il y a quelques mois. Y a-t-il une solution de contournement? Je n'en ai trouvé aucun.

67
dave

J'ai constaté que l'utilisation de nom_utilisateur @ nom_serveur en tant que nom d'utilisateur pour la connexion résoudra le problème lorsqu'il se produit contre les bases de données Azure. J'ai eu des relations qui ont toujours fonctionné sans que cela cesse brusquement, puis cela a réglé le problème pour moi.

Par exemple, lorsque vous utilisez un identifiant mylogin et que vous vous connectez à myserver.database.windows.net, si j'utilise plutôt [email protected]. net en tant que nom d'utilisateur, je n'obtiendrai pas le problème "La source n'est pas disponible".

118
Stacy Vicknair

Je reçois cette erreur dans Visual Studio 2017 lorsque j'utilise l'authentification SQL Server mais n'enregistre pas le mot de passe. J'ai testé ces étapes avec Visual Studio 15.6.3 et SQL Server 12.0.5000.0

Corriger l'erreur

Cela résout le problème, mais le problème revient la prochaine fois que je redémarre Visual Studio.

  1. Allez à Outils -> SQL Server -> Nouvelle comparaison de schéma ...
  2. Sélectionnez soit Sélectionner la source ou Sélectionner la cible
  3. Sélectionnez Select Connection
  4. Sous Connexions récentes, trouvez toutes les connexions qui vous ont causé cette erreur.
  5. Cliquez sur la connexion avec le bouton droit de la souris et sélectionnez Supprimer de l'historique
  6. Redémarrer Visual Studio

Empêcher l'erreur de revenir

  1. Complet Correction de l'erreur ci-dessus
  2. Lorsque vous définissez les détails de la connexion, cochez la case Mémoriser le mot de passe.

Reproduire l'erreur

Si vous voulez résoudre cette erreur, voici comment j'ai réussi à la reproduire.

  1. Allez à Outils -> SQL Server -> Nouvelle comparaison de schéma ...
  2. Sélectionnez une connexion source et cible
  3. Pour au moins une connexion, utilisez Authentification SQL Server mais ne pas sélectionnez Mémoriser le mot de passe
  4. Appuyez sur Compare
  5. Assurez-vous qu'il fonctionne sans erreurs
  6. Redémarrer Visual Studio
  7. Répétez les étapes 1 à 4 en utilisant exactement les mêmes détails de connexion.
73
Sam

Après avoir tout essayé ici, voici ce qui a fonctionné pour moi:

  1. Fermez l'instance VS.

  2. Supprimer les clés de connexion enregistrées dans

HKEY_CURRENT_USER\LOGICIEL\Microsoft\VisualStudio\14.0\ConnectionMruList

  1. Rouvrez VS et réessayez.
25
sotn

Les autres réponses ne fonctionnaient pas pour moi car j'utilisais SQL Server directement et non Azure, mais après avoir vérifié les propriétés avancées de la chaîne de connexion, j'ai constaté que l'authentification était définie sur "Non spécifié" et que la bibliothèque réseau était vide.

Je les ai changés et cela a encore fonctionné. Plutôt étrange car cela me permet de sélectionner la base de données pour la connexion. Cela ne me permettrait tout simplement pas de comparer les schémas donnant le message "La source n'est pas disponible".

Sql

16
Kuffs

Pour moi c'était le \ symbole à la fin de l'adresse IP du serveur dans le server name champ qui l'a corrigé. Très étrange.

par exemple. au lieu de 10.10.10.10 j'écris 10.10.10.10\ et il se connecte bien.

Remarque: j'utilise Visual Studio 2017.

10
knr

J'ai eu des résultats mitigés avec les autres réponses ici. J'utilisais un fichier de comparaison de sauvegarde qu'un autre développeur avait mis en place. Il s'agit d'un serveur SQL autonome et non d'une base de données Azure. La comparaison fonctionnerait parfois et pas les autres (donner à la cible une erreur indisponible). Dans mon cas, la comparaison enregistrée utilisait simplement le nom du serveur et non un nom de domaine complet. Lorsque j'ai changé pour un nom de domaine complet, cela a fonctionné pour moi. Je ne sais pas si le problème va revenir, mais j'ai pensé ajouter cette information au cas où elle serait utile à d'autres.

1
Mike

J'ai eu cette erreur lors de l'ouverture d'un fichier .scmp précédemment enregistré qui fonctionnait correctement lors de sa création initiale.

Le problème était dû à un mot de passe manquant dans la chaîne de connexion enregistrée. La source utilisait l'authentification intégrée, donc VS ne s'en plaignait pas.

Sélectionner à nouveau la connexion cible n'a pas aidé, probablement parce que VS a utilisé la chaîne de connexion mise en cache.

J'ai résolu le problème en ajoutant l'argument Password à la chaîne de connexion du fichier. La chaîne de connexion cible est spécifiée à deux endroits (XPaths ci-dessous):

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

Après ces modifications, j'ai rouvert le fichier .scmp et la comparaison a réussi.

1
Dark Daskin

Je faisais référence au serveur SQL via IP et m'a donné ce problème. J'y ai fait référence via son nom DNS et le problème a été résolu!

Pas certain de pourquoi! Cependant, cela a fonctionné comme ça :)

0
Evan Camilleri

J'ai eu le même problème dans VS studio 2015. Mais comme la base de données était sur mon PC, j'utilisais localhost au lieu du nom réel de l'ordinateur. J'ai simplement choisi le serveur informatique comme dans la proposition de Visual Studio et cela a fonctionné.

0
esdras

Le même problème apparaît lorsque l'utilisateur n'a pas les autorisations nécessaires pour effectuer l'opération de comparaison de schéma. https://msdn.Microsoft.com/en-us/library/jj889462 (v = vs.103) .aspx

0
AdvanTiSS

J'ai essayé en 2015 la version Visual Studio Professional et j'ai eu ce problème au moment de la comparaison des données SQL et cela a fonctionné pour moi lorsque j'utilise le nom d'hôte au lieu de l'adresse IP des bases de données. J'espère que cela résoudra le problème.

0

Je peux le faire fonctionner lorsque je clique avec le bouton droit sur le nom de la base de données dans la fenêtre de l'explorateur d'objets SQL Server et que je sélectionne Schema Compare. Si j'essaie d'utiliser la fenêtre de comparaison de schéma qui s'ouvre à partir du menu Outils, cela ne fonctionnera jamais.

0
user9791281

Un processus bloquait la base de données. Après avoir exécuté un kill [spid], cela a fonctionné à nouveau.

0
dave