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, cela montre l'erreur "Target is unavailable" ou "Source is unavailable" lorsque vous changez de direction.
il fonctionnait correctement il y a quelques mois. Est-il une solution de contournement? Je ne pouvais pas trouver tout.
12 réponses
j'ai trouvé que l'utilisation de nom d'utilisateur@servername comme le nom d'utilisateur pour se connecter va corriger le problème quand il se produit contre les bases de données Azure. J'ai eu des relations qui ont toujours fonctionné sans faire tout à coup s'arrêter et puis ça m'a arrangé ça.
par exemple, en utilisant un login de mylogin et la connexion à myserver.database.windows.net si j'utilise plutôt mylogin@myserver.database.windows.net comme la nom d'utilisateur je n'obtiendrai pas le numéro" La Source n'est pas disponible".
Je reçois cette erreur dans Visual Studio 2017 lorsque J'utilise L'authentification du serveur SQL mais que je 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
ceci corrige le problème, mais le problème revient la prochaine fois que je redémarre Visual Studio.
- Outils -> SQL Server -> Nouvelle Comparaison De Schéma...
- choisir l'une ou l'autre Sélectionner La Source ou Sélectionner La Cible
- Sélectionner Sélectionnez Connexion
- Dernières Connexions, Trouvez toutes les connexions qui vous ont donné cette erreur
- Pour chacun d'eux, cliquez-droit sur la connexion et sélectionnez Retirer de l'Histoire
- Redémarrez Visual Studio
empêcher l'erreur de revenir
- Complet Fixation de la erreur
- Lorsque vous définissez les détails de la connexion, consultez le Mémoriser Le Mot De Passe case à cocher.
Reproduire l'erreur
Si vous voulez résoudre cette erreur, voici comment j'ai réussi à le reproduire.
- Outils -> SQL Server -> Nouvelle Comparaison De Schéma...
- sélectionnez une connexion source et cible
- Pour au moins un connexion, utilisez authentification du serveur SQL mais ne pas sélectionner Mémoriser Le Mot De Passe
- Appuyez sur Comparer
- s'Assurer qu'il fonctionne sans erreurs
- Redémarrez Visual Studio
- répéter les étapes 1 à 4, en utilisant les mêmes détails de connexion
Après avoir tout essayer ici, c'est ce qui a fonctionné pour moi:
Close VS instance.
supprimez les clés de connexion sauvegardées dans
HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\ConnectionMruList
- rouvrez VS et réessayez.
les autres réponses ne fonctionnaient pas pour moi car J'utilisais SQL Server directement et pas Azure mais après avoir vérifié les propriétés avancées de la chaîne de connexion, j'ai vu que l'authentification était réglée sur "non spécifié" et la bibliothèque réseau était vide.
je les ai changés et ça a fonctionné à nouveau. Plutôt étrange car il m'a permis de sélectionner la base de données pour la connexion. Il ne me permettrait pas de comparer les schémas donnant la source mentionnée " n'est pas disponible" message.
Pour moi, c'était l' \
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 sur ok.
Note: J'utilise Visual Studio 2017.
un processus bloquait la base de données. Après avoir exécuté un kill [spid] il a fonctionné à nouveau.
le même problème apparaît lorsque l'utilisateur n'a pas les permissions nécessaires pour effectuer l'opération de comparaison de schéma https://msdn.microsoft.com/en-us/library/jj889462 (v=103).aspx
j'ai eu cette erreur lors de l'ouverture d'un fichier précédemment sauvegardé .fichier scmp qui a fonctionné avec succès lors de sa création.
le problème a été causé par l'absence de mot de passe dans la chaîne de connexion sauvegardé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 en cache.
j'ai résolu le problème en ajoutant l' Password
argument en la chaîne de connexion dans le fichier. Il y a deux endroits où la chaîne de connexion cible est spécifiée (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 s'est déroulée avec succès.
je faisais référence à SQL server via IP et j'ai eu ce problème. J'y ai fait référence via son nom DNS et le problème a été résolu!
je ne sais Pas pourquoi! Cependant, il a travaillé comme ceci :)
j'ai eu des résultats mitigés avec les autres réponses ici. J'utilisais un fichier de comparaison qu'un autre développeur avait créé. 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 est une erreur indisponible). Dans mon cas, la comparaison sauvegardée utilisait simplement le nom du serveur et non pas un FQDN. Quand j'ai changé pour un FQDN, ça a marché pour moi. Je ne suis pas sûr que le problème reviendra, mais j'ai pensé ajouter ceci: information au cas où elle serait utile à d'autres.
après avoir essayé de nombreuses suggestions différentes voici ce qui a fonctionné pour moi.
- Cela dépend de ce qui n'est pas disponible, de la source ou de la cible. Sélectionnez source/cible claire.
- Enregistrer les modifications dans le fichier
- rouvrez le fichier et sélectionnez nouvelle connexion à nouveau (dans ma base de données Azure)
- Cliquez sur Comparer de nouveau, maintenant ça fonctionne.
je peux le faire fonctionner quand je clique avec le bouton droit de la souris sur le nom de la base de données dans la fenêtre SQL Server Object Explorer et que je sélectionne Schema Compare à partir de là. Si j'essaie d'utiliser la fenêtre de comparaison de schéma qui s'ouvre à partir du menu Outils, cela ne fonctionne jamais.