Невозможно получить доступ к экземпляру SQL Server 2008 R2 удаленно - PullRequest
6 голосов
/ 28 февраля 2012

Очень загадочная проблема: P

У меня есть сервер, настроенный со статическим IP.Я установил SQL Server 2008 R2 с дополнительным экземпляром (ITAPP).Теперь, когда я использую IP для доступа к SQL Server, происходит следующее:

Клиентский компьютер:

sqlcmd -S XXX.XXX.XXX.XXX -U sa -P mypass

Подключено успешно ....

Но когда я использую:

sqlcmd -S XXX.XXX.XXX.XXX\ITAPP -U sa -P mypass

HResult 0xFFFFFFFF, уровень 16, состояние 1 Сетевые интерфейсы SQL: ошибка при поиске указанного сервера / экземпляра [xFFFFFFFF].

Sqlcmd: ошибка: собственный клиент Microsoft SQL: Anпри установлении соединения с сервером произошла ошибка.

При подключении к SQL Server 2005 этот сбой может быть вызван тем, что в настройках по умолчанию SQL Server не разрешает удаленные соединения.

Sqlcmd: Ошибка: собственный клиент Microsoft SQL: истекло время ожидания входа в систему.

Даже на той же машине (где установлен SQL Server) с использованием SQL Server Management Studio.Я отключил брандмауэр на обеих машинах, даже разрешил все протоколы для ITAPP (Общая память, Именованные каналы, TCP / IP), также установил Allow Remote connection в true.

Еще одна вещь, когда я использую 127.0.0.1\SQLITRAX для подключения к серверу, к которому он подключается немедленно.

Пожалуйста, помогите мне из этого беспорядка:)

Ответы [ 2 ]

16 голосов
/ 28 февраля 2012

возможно, это потому, что это именованный экземпляр на удаленном сервере.
Именованный экземпляр не использует стандартный Tcp-порт SQL Server 1433, только порт по умолчанию (без имени) использует порт 1433.
Любой другой«именованный» экземпляр просто прослушивает другой порт.
Итак, вам нужно проверить в конфигураторе SQL-Server, на котором прослушивается TCP-порт, а затем указать клиенту подключиться к этому порту.
Скажите, что ваш именованный экземплярпрослушивает порт 12345, затем клиент должен подключиться с помощью следующей команды

sqlcmd -S XXX.XXX.XXX.XXX,12345 -U sa -P mypass

, когда вы указываете порт TCP, тогда вам не нужно имя экземпляра.
В моем пониманииимя экземпляра - это способ для служб SQL Server найти порт TCP, который прослушивает этот именованный экземпляр.
Но для того, чтобы это работало, ваш клиент должен иметь возможность доступа к тем другим службам, которые разрешают имя экземпляра SQLСервер (может быть, это сервер Sql Agent / браузер SQL Server, но я не уверен)

Обновление
Вот снимок экрана, который показывает, где установить порт TPC для именованного экземпляра SQL Server.How to check the TPC listening port of a SQL Server named instance

Итак, на каком TCP-порту прослушивается ваш именованный экземпляр SQL Server?

3 голосов
/ 28 февраля 2012

Служба обозревателя SQL Server должна быть доступна, чтобы иметь возможность подключаться к именованным экземплярам.

См. эту статью для получения дополнительной информации о том, что он делает и какие порты открывать на брандмауэре

В этой статье technet представлен удобный скрипт для открытия всех необходимых портов

...