Мы обновляем наше программное обеспечение с SQL 2000 до 2008 R2. Наши клиенты будут устанавливать обновление, которое удаляет 2000 и устанавливает 2008 R2 в том же экземпляре. Поэтому, если экземпляра не существует, имя экземпляра не будет установлено (по умолчанию). Однако проблема начинается с клиентов, у которых есть именованный экземпляр SQL.
Начиная с 2008 R2 (не уверен, что раньше), по какой-то причине клиент, подключающийся к серверу по имени экземпляра, не работает. Тестирую из Management Studio - если не могу это подключить, значит, ничего не может подключиться. Я просматриваю сетевые серверы и нахожу в списке конкретный сервер \ экземпляр. Но при попытке подключиться к имени экземпляра, например MyServer\INST
, Я получил:
A network-related or instance-specific error occurred while establishing
a connection to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured
to allow remote connections. (provider: SQL Network Interfaces, error: 26 -
Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)
У меня действительно включены протоколы TCP / IP и Named Pipes, это первое, что я сделал. Когда я подключаюсь к серверу, используя запятую (,) и номер порта, например MyServer, 49195
, он отлично работает. Таким образом, похоже, что клиентские компьютеры просто не могут идентифицировать имена экземпляров. Это произошло на всех наших установках SQL 2008 R2 и на всех клиентских компьютерах, включая Win 7, XP, Vista, Server 2008 и Server 2003. Мы никогда не сталкивались с такими проблемами в более ранних версиях SQL. Проблема сохраняется даже при отключенных брандмауэрах и антивирусах.
Это большое обновление, которое мы скоро будем распространять среди всех наших клиентов, и мы хотим свести к минимуму взаимодействие, которое им необходимо с нами для его установки. Нам абсолютно не нравится идея использовать номер порта, потому что он всегда будет отличаться, и нам придется модифицировать каждого клиента, чтобы он указывал на этот сервер / порт. У некоторых из наших клиентов могут быть сотни клиентских компьютеров. Как заставить снова работать клиентские подключения к именованному экземпляру SQL? В конце концов, в этом вся цель именованных экземпляров, и если клиент не может подключиться к этому экземпляру по его имени, то для чего он вообще назван?
РЕДАКТИРОВАТЬ
Было упомянуто, чтобы убедиться, что браузер SQL запущен, поэтому я проверил, и он работает. Сервер также может подключаться к себе (локально) - только внешние подключения отклоняются.
ОБНОВИТЬ
После более тщательной проверки я узнал, что брандмауэр не был полностью отключен при тестировании, и после его полного отключения это работает. Таким образом, похоже, что брандмауэр блокирует доступ внешних клиентов к браузеру SQL.
Включена и запущена ли служба браузера SQL?
http://www.mssqltips.com/sqlservertip/1946/overview-of-the-sql-server-browser-service/
Попробуйте отключить брандмауэр, так как он может заблокировать порт 1434 для браузера SQL.
SQL Server 2005+ работает иначе, чем 2000, при идентификации экземпляров сервера.
Служба обозревателя SQL, вероятно, не запущена.
Видеть Вот.
В SQL Server 2000 идентификация конечных точек подключения к серверу выполнялась службой SQL Server. SQL Server 2005 заменяет эту функцию службой обозревателя SQL Server.