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


Пользователи могут не иметь возможности удаленно подключиться к 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 запуске будут соответствующим образом изменены.