При использовании SSMS, например, для подключения к SQL Server, я бы указывал имя сервера, к которому требуется подключиться, а также метод аутентификации, в данном случае, аутентификации Windows. Если SQL Server работал на порте, отличном от 1433 по умолчанию, я добавил бы запятую и номер порта после имени сервера.

Недавно мы получили новый сервер, и я могу подключиться к нему без указания номера порта, поэтому я предположил, что номер порта, на котором он работал, был 1433. Тем не менее, я замечаю, что когда я запускаю следующий запрос (я являюсь администратором на коробке, но не администратор базы данных), он показывает мне порт, отличный от 1433.

выберите @@ имя_сервера иди ОБЪЯВИТЬ @portNumber NVARCHAR(10)

EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
                        ,@key = 'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
                        ,@value_name = 'TcpDynamicPorts'
                        ,@value = @portNumber OUTPUT



SELECT
    [Port Number] = @portNumber

GO

Допустим, запрос возвращает номер порта 2121. Когда я соединяюсь с номером порта 2121, я также успешно соединяюсь.

В: Если я не укажу номер порта, не должна ли попытка завершиться неудачей, поскольку попытка по умолчанию должна быть 1433?

Я пытаюсь выяснить, почему наши оффшорные люди не имеют доступа из-за того, что порты не открываются. Должен ли я также запросить открытие 1433 или просто номер poprt, возвращенный вышеупомянутым SQL?

1 ответ1

1

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

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

Вы можете установить статический порт или предоставить оффшорному порту порт, возвращаемый диспетчером SQL. Статический порт означает, что нет никаких шансов, что он изменится позже (хотя это малая вероятность).

В этой статье показано, как настроить порт статически:

http://support.microsoft.com/kb/823938

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .