Я использую VS2008 на своем локальном компьютере для написания приложения ASP.Net. Наш экземпляр SQL Server 2008 размещен удаленно на выделенном сервере базы данных. Я могу подключиться к серверу через свое приложение как на моем локальном компьютере, так и на рабочем сервере, но не на нашем сервере разработки.
Я открыл порт 1433 на сервере разработки, но это не сработало. Строка подключения одинакова на обоих серверах. И производственный сервер, и сервер разработки используют Windows Server 2008. Я получаю ошибку
Произошла ошибка, связанная с сетью или конкретным экземпляром, при установке соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)
РЕДАКТИРОВАТЬ: Я думаю, я должен прояснить, что SQL Server управляется хостинговой компанией, за которую мы платим, поэтому у меня нет доступа к какой-либо конфигурации этого сервера. Кроме того, насколько мне известно, сервер работает нормально, так как я могу подключаться к нему из 2/3 разных мест через свое приложение.
РЕДАКТИРОВАТЬ 2: Получается, что один из маршрутизаторов в нашем офисе блокировал трафик через порт 1433. Спасибо, Брайан, за вашу постоянную помощь.
Ясно, что конфигурация сервера в порядке, поскольку вы объяснили, что вы уже можете подключаться из других удаленных систем, но у вас есть проблемы с этой конкретной системой. Вы можете разрешить и пропинговать сервер из своей системы разработки, но кажется, что вы не можете подключиться к порту SQL (1433). Как Энди уже отмечал в комментариях, это, вероятно, связано с тем, что брандмауэр между вашей системой разработки и сервером SQL может блокировать ваши попытки подключения.
Вы можете проверить соединение с SQL-сервером с помощью telnet (очевидно, замените имя хоста на имя вашего SQL-сервера).
telnet sql.server.com 1433
Если вы видите ответ, похожий на:
Trying sql.server.com...
Connected to sql.server.com.
Escape character is '^]'
... тогда это не проблема брандмауэра, однако, если вы видите сообщение, подобное:
Unable to connect to remote host
... то почти наверняка вас блокирует брандмауэр.
Есть хорошая статья MSDN, в которой объясняется, как устранение неполадок при подключении к SQL-серверу, в котором рассказывается гораздо подробнее.
Попробуйте принудительно установить тип TCP-соединения (похоже, что у именованных каналов более высокий приоритет). Измените серверную часть строки подключения на server=tcp:hostname,1433
.