Поделиться через


Пользователи могут не иметь возможности удаленно подключаться к SQL Server с помощью протокола TCP/IP

Эта статья поможет устранить проблему, из-за которой вы не сможете удаленно подключаться к SQL Server с помощью протокола TCP/IP.

Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2018930

Симптомы

При использовании Microsoft SQL Server может возникнуть один или несколько следующих симптомов:

  • Только пользователи с разрешением CONTROL SERVER (например, члены предопределенных ролей сервера syadmin ) могут подключаться через TCP/IP. Пользователи, у которых нет этого разрешения, не могут удаленно подключаться через протокол TCP/IP либо с помощью проверки подлинности Windows или SQL Server.

    Примечание.

    Вы заметите, что повышенные привилегии пользователей отображаются только в режиме динамического управления sys.dm_exec_sessions (Transact-SQL), но не в представлении sys.dm_exec_connections (Transact-SQL).

  • Локальные и удаленные подключения с использованием протокола именованных каналов, а также локальные подключения с использованием протокола общей памяти продолжают работать нормально.

Кроме того, следующие сообщения регистрируются в файле журнала ошибок SQL Server:

  • При запуске SQL Server:

    Ошибка: 26023, серьезность: 16, состояние: 1.
    Поставщик TCP сервера не смог прослушивать ['any'ipv6<> 1963]. Порт TCP уже используется.
    Ошибка: 9692, серьезность: 16, состояние: 1.
    Транспорт протокола Service Broker не может прослушивать порт 1963, так как он используется другим процессом.

  • Для неудачных имен входа:

    SQL Server 2008 и более поздних версий:

    Ошибка: 18456, серьезность: 14, состояние: 11.
    Сбой входа для пользователя MyDomain\TestAcc. Причина: проверка доступа к серверу на основе токена завершилась ошибкой инфраструктуры. Проверьте на наличие предыдущих ошибок.

Причина

Ошибка возникает при настройке конечной точки TCP для Service Broker с использованием того же порта, который настроен для использования экземпляра SQL Server. Список конечных точек можно получить, выполнив следующий запрос:

SELECT * FROM sys.tcp_endpoints

Примечание.

Как описано в разделе "Электронная книга" по sys.tcp_endpoints (Transact-SQL), это представление не содержит сведения о портах и протоколах, которые в настоящее время настроены для использования экземпляра SQL Server. Чтобы найти эти сведения, см. диспетчер конфигурации SQL Server.

Решение

  • Метод 1. Удалите конечную точку, которая вызывает проблему с помощью команды DROP ENDPOINT (Transact-SQL).

    Например, чтобы удалить конечную точку с именем TestEP , можно использовать следующую команду:

    DROP ENDPOINT TestEP
    
  • Метод 2. Измените конечную точку для использования другого порта с помощью команды ALTER ENDPOINT (Transact-SQL).

    Например, чтобы изменить конечную точку с именем TestEP для использования другого порта, можно использовать следующую команду:

    ALTER ENDPOINT TestEP as tcp (listener_port=1980)
    

Дополнительная информация

Аналогичные проблемы также могут возникать с другими конечными точками TCP, такими как созданные для зеркального отображения базы данных, и сообщения об ошибках при запуске SQL Server будут изменяться соответствующим образом.