У нас возникла странная проблема с SQL 2008 R2 (10.50.1600), установленным как именованный экземпляр. Для подключения внешних клиентов у нас есть определенная процедура, которой мы должны следовать, но не должны. Теперь я действительно открыл протоколы TCP/IP
и Named Pipes
на сервере SQL и перезапустил его, это не проблема. Мы находимся в домене Active Directory (работает с Server 2003). Проблема существует независимо от того, какой ОС является сервером или клиентом (XP, 2003, 2008, Vista, 7, 64-битная, 32-битная и т. Д.). Проблема также сохраняется от всего, что может подключиться, например, SQL Management Studio, ADO (из наших приложений) и т. Д.
Проблема в том, что прежде чем любой клиент сможет подключиться к этому серверу, каждый клиентский компьютер должен сначала подключиться к этому серверу через ODBC (а мы не используем ODBC). Любая попытка подключиться к серверу SQL 10.5 до этого приводит к «Сервер не существует или доступ запрещен». Но как только мы можем подключиться к ODBC (через Named Pipes
), все остальное начинает работать. Одна и та же проблема возникает как при использовании имени компьютера и IP-адреса. Фактически, если мы хотим соединиться с именем компьютера \ именем экземпляра, то сначала мы должны сделать это в ODBC, а затем, если мы хотим соединиться через IP-адрес \ имя экземпляра, то мы должны сделать то же самое для что.
Нам приходилось делать это на каждом клиентском компьютере. Опять же, когда ODBC сможет подключиться к этому серверу SQL через именованные каналы, все будущие попытки этого клиента сработают.
Что может быть причиной этого? Как этого избежать? Я не должен был делать этот «трюк ODBC», как мы его называем. У меня никогда не было этой проблемы ни с какой другой версией SQL.