다음을 통해 공유


사용자가 TCP/IP 프로토콜을 사용하여 SQL Server에 원격으로 연결할 수 없습니다.

이 문서는 TCP/IP 프로토콜을 사용하여 SQL Server에 원격으로 연결할 수 없는 문제를 해결하는 데 도움이 됩니다.

원래 제품 버전: SQL Server
원래 KB 번호: 2018930

증상

Microsoft SQL Server를 사용하는 경우 다음 증상 중 하나 이상이 나타날 수 있습니다.

또한 다음 메시지는 SQL Server Errorlog 파일에 기록됩니다.

  • SQL Server 시작 시:

    오류: 26023, 심각도: 16, 상태: 1.
    서버 TCP 공급자가 ['any'ipv6<> 1963]에서 수신 대기하지 못했습니다. Tcp 포트가 이미 사용 중입니다.
    오류: 9692, 심각도: 16, 상태: 1.
    Service Broker 프로토콜 전송은 다른 프로세스에서 사용 중이므로 포트 1963에서 수신 대기할 수 없습니다.

  • 실패한 로그인의 경우:

    SQL Server 2008 이상 버전:

    오류: 18456, 심각도: 14, 상태: 11.
    사용자 'MyDomain\TestAcc'에 로그인하지 못했습니다. 원인: 인프라 오류로 인해 토큰 기반 서버 액세스의 유효성을 검사하지 못했습니다. 이전 오류를 확인합니다.

원인

이 오류는 SQL Server 인스턴스가 사용하도록 구성된 것과 동일한 포트를 사용하여 Service Broker에 대한 TCP 엔드포인트를 구성할 때 발생합니다. 다음 쿼리를 실행하여 엔드포인트 목록을 가져올 수 있습니다.

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 시작 시 오류 메시지가 그에 따라 변경됩니다.