Ошибка сравнения схемы SQL "Целевое недоступно"
При сравнении проекта SQLServer в Visual Studio 2015 Update 2 с базой данных SQL Server 2012 отображается ошибка "Целевой недоступен" или "Источник недоступен" при изменении направления.
Он работал нормально пару месяцев назад. Есть ли обходной путь? Я не мог найти.
Ответы
Ответ 1
Я обнаружил, что использование имя_пользователя @servername, поскольку имя пользователя для подключения будет исправлять проблему, когда это происходит с базами данных Azure. У меня были связи, которые исторически работали, не делая этого внезапно останавливаясь, а затем это исправило это для меня.
Например, при использовании входа mylogin и подключении к myserver.database.windows.net, если вместо этого я использую [email protected] windows.net как имя пользователя, я не получу проблему "Источник недоступен".
Ответ 2
Я получаю эту ошибку в Visual Studio 2017, когда использую аутентификацию SQL Server, но не сохраняю пароль. Я проверил эти шаги с Visual Studio 15.6.3 и SQL Server 12.0.5000.0
Исправление ошибки
Это решает проблему, но проблема возвращается в следующий раз, когда я перезапускаю Visual Studio.
- Перейдите в Инструменты → SQL Server → Сравнение новой схемы...
- Выберите " Выбрать источник" или " Выбрать цель"
- Выберите Выбрать соединение
- В разделе Последние подключения найдите все подключения, которые дали вам эту ошибку
- Для каждого из них щелкните соединение правой кнопкой мыши и выберите " Удалить из истории".
- Перезапустите Visual Studio
Предотвращение возврата ошибки
- Полное исправление ошибки выше
- При настройке параметров подключения установите флажок " Запомнить пароль".
Воспроизведение ошибки
Если вы хотите устранить эту ошибку, вот как мне удалось воспроизвести ее.
- Перейдите в Инструменты → SQL Server → Сравнение новой схемы...
- Выберите источник и целевое соединение
- По крайней мере для одного подключения используйте проверку подлинности SQL Server, но не выбирайте Запомнить пароль
- Нажмите Сравнить
- Убедитесь, что он работает без ошибок
- Перезапустите Visual Studio
- Повторите шаги 1-4, используя точно такие же детали подключения
Ответ 3
Пробовав все здесь, это то, что сработало для меня:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14,0\ConnectionMruList
- Верните VS и повторите попытку.
Ответ 4
Другие ответы не работали для меня, поскольку я использовал SQL Server напрямую, а не Azure, но после проверки расширенных свойств строки подключения я увидел, что для проверки подлинности было установлено значение "Не указано", а сетевая библиотека была пуста.
Я изменил их, и он снова сработал. Довольно странно, поскольку он позволяет мне выбирать базу данных для подключения. Это просто не позволит мне сравнивать схемы, дающие сообщение "Источник недоступен".
![Sql]()
Ответ 5
Для меня это был символ \
в конце IP-адреса сервера в поле server name
, который его исправил. Очень странно.
например. вместо 10.10.10.10
пишу 10.10.10.10\
, и он подключается нормально.
Примечание. Я использую Visual Studio 2017.
Ответ 6
У меня была эта ошибка при открытии ранее сохраненного файла .scmp, который работал успешно, когда он был изначально создан.
Проблема была вызвана отсутствием пароля в сохраненной строке подключения. Источник использовал встроенную аутентификацию, поэтому VS не жаловался на это.
Выбор целевого соединения снова не помог, возможно, потому, что VS использовал строку кэшированного подключения.
Я решил проблему, добавив аргумент Password
в строку подключения в файле. Есть два местоположения, в которых задана целевая строка соединения (XPaths, показанные ниже):
-
/SchemaComparison/TargetModelProvider/ConnectionBasedModelProvider/ConnectionString
-
/SchemaComparison/SchemaCompareSettingsService/ConfigurationOptionsElement/PropertyElementName[Name='TargetConnectionString']
После этих изменений я снова открыл файл .scmp, и сравнение прошло успешно.
Ответ 7
У меня были смешанные результаты с другими ответами здесь. Я использовал файл сравнения сохранения, который собрал другой разработчик. Это автономный SQL Server, а не база данных Azure. Сравнение будет работать иногда, а не другие (указание цели - ошибка). В моем случае в сохраненном сравнении использовалось только имя сервера, а не полное доменное имя. Когда я перешел на полное доменное имя, это сработало для меня. Я не уверен, что проблема вернется снова, но думал, что добавлю эту информацию, если она будет полезна для других.
Ответ 8
Я пробовал в 2015 году версию Visual Studio Professional, и у меня возникла эта проблема во время сравнения данных SQL, и она работала для меня, когда я использую имя хоста вместо IP-адреса баз данных. Надеюсь, что это решит проблему.
Ответ 9
Процесс блокировал базу данных. После выполнения kill [spid] он снова работал.
Ответ 10
Такая же проблема возникает, когда пользователь не имеет необходимых разрешений для выполнения операции сравнения схем https://msdn.microsoft.com/en-us/library/jj889462(v=vs.103).aspx
Ответ 11
Я имел в виду сервер SQL через IP и дал мне эту проблему.
Я упоминал об этом через его DNS-имя, и проблема была решена!
Не знаю, почему! Однако он работал следующим образом:)
Ответ 12
Я столкнулся с этой ошибкой в Visual Studio 2017. Ни один из других ответов здесь не работал у меня.
Вот что мне удалось исправить:
- Проведите сравнение SQL данных, выбрав один и тот же сохраненный источник и целевые соединения
- Проведите сравнение новой схемы SQL с использованием тех же сохраненных исходных и целевых соединений.
Я не уверен, что эти шаги - это исправление или если это просто совпадение.
Ответ 13
Я могу заставить его работать, когда я щелкаю правой кнопкой мыши на имени базы данных в окне обозревателя объектов SQL Server и выбираю "Сравнение схем". Если я пытаюсь использовать окно сравнения схем, которое открывается из меню "Инструменты", оно никогда не работает.
Ответ 14
У меня фактически была такая же проблема в VS studio 2015. Но так как база данных была на моем ПК, я использовал localhost вместо реального имени компьютера. Я просто вручную выбрал компьютерный сервер, как в предложении самой Visual Studio, и это сработало.
Ответ 15
Хотя некоторые решения на этой странице помогли мне иногда, но не всегда.
Но этот метод, который я описываю, работает для меня большую часть времени
Когда вы указываете имя вашего сервера, укажите протокол и порт, как это
Имя сервера: tcp: my-server-name, 1443
Мой сервер называется Azure BTW
Ответ 16
Ни один из ответов, предоставленных здесь, не работал для меня; Я использую SQL Server и Visual Studio 2017. Мне удалось провести сравнение, добавив IP-адрес сервера в мой файл hosts, а затем используя это имя хоста в окне подключения.
Ответ 17
Попробовав много разных предложений, это то, что сработало для меня.
- Зависит от недоступности, источника или цели. Выберите прозрачный источник/цель.
- Сохранить изменения в файле
- Верните файл и снова выберите новое соединение (в моем случае база данных Azure)
- Нажмите "Сравнить снова", теперь он работает.