Назад | Перейти на главную страницу

SQL Server Management Studio - Ошибка подключения к удаленной БД

Хорошо, вот сделка:

Я подключаюсь к серверу Windows 2003 через VPN. На этом сервере есть удаленный механизм SQL Server 2005 Express.

Я могу подключиться к базе данных с помощью Visual Studio 2008.

Однако я не могу подключиться к этой же базе данных с помощью SQL Server 2005 Management Studio (Standard).

Я сотни раз проверял информацию о подключении, но все равно ничего.

Одна мысль: использует ли VS ans SSMS один и тот же поставщик sql?

Примечание. Я использую Windows 7 RC. У меня не было абсолютно никаких проблем с использованием той же конфигурации под Vista.

Я предполагаю, что вы не забыли указать имя экземпляра (server \ SQLEXPRESS)?

Попробуйте создать ODBC на том же сервере. Если вы получите ту же ошибку; создайте еще один ODBC, но используйте обычный драйвер «SQL Server», и в настройках «Конфигурация клиента» выберите «Именованные каналы».

Кроме того, SQLChickens советует убедиться, что браузер SQL запущен на сервере.

Также попробуйте использовать IP-адрес вместо NetBios-имени.

Если это механизм SQL Express, вам необходимо убедиться, что служба браузера SQL запущена, иначе клиент не сможет видеть именованные экземпляры на стороне сервера.

Я подтвердил, что в моем случае (с почти идентичным описанием проблем) с сервером все в порядке, и я мог добраться до него, отключив общедоступный профиль брандмауэра Windows 7. (Я также мог подключиться к другому серверу SQL Server 2005, а не через мою VPN, так что это явно была проблема с моей стороны, но также и какое-то взаимодействие с конфигурацией сервера.)

В правилах для входящих подключений было 2 пары правил для SQL Server Management Studio, разрешающие любые UDP и любые TCP-порты, для профилей «Частный» и «Домен», программа SqlWb.exe. Ни один из них не был включен.

Я изменил одну пару правил для обслуживания всех трех профилей (Public, Private, Domain), включил их и смог подключиться.

В этом посте на MSDN есть много других ссылок и контрольный список, которые помогут решить проблему:

http://blogs.msdn.com/sql_protocols/archive/2007/03/31/ named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server.aspx

Из сообщения:

Различные причины делятся на пять категорий:

  1. Неправильная строка подключения, например использование SqlExpress.
  2. NP не был включен в экземпляре SQL.
  3. Удаленное соединение не было включено.
  4. Сервер не запущен или указывает на ненастоящий сервер в строке подключения.
  5. Другие причины, такие как неправильный контекст безопасности.

Сводный контрольный список:

  1. Ваш целевой сервер запущен?
  2. Ваш целевой сервер слушает NP? Какая труба?
  3. Ваш клиент включил NP? Использовать тот же канал для подключения к серверу?
  4. Вы устанавливаете местное соединение? Если да, то какой экземпляр - по умолчанию или удаленный?
  5. Вы правильно указали имя экземпляра в строке подключения? Помните, что Sqlexpress - это именованный экземпляр.
  6. Вы включили удаленное подключение? Брандмауэр? IPSec? «Общий доступ к файлам и принтерам» открыт? Может получить доступ к серверу?
  7. Можете ли вы установить базовое соединение с помощью или \? Используйте sqlcmd или osql.
  8. Каков ваш повторный шаг? Что ваше клиентское приложение делало во время этой ошибки? Какая операция с БД, подробно?