사용자가 TCP/IP 프로토콜을 사용하여 SQL Server에 원격으로 연결할 수 없습니다.
이 문서는 TCP/IP 프로토콜을 사용하여 SQL Server에 원격으로 연결할 수 없는 문제를 해결하는 데 도움이 됩니다.
원래 제품 버전: SQL Server
원래 KB 번호: 2018930
증상
Microsoft SQL Server를 사용하는 경우 다음 증상 중 하나 이상이 나타날 수 있습니다.
CONTROL SERVER 권한이 있는 사용자(예: syadmin 고정 서버 역할의 멤버)만 TCP/IP를 통해 연결할 수 있습니다. 이 권한이 없는 사용자는 Windows 또는 SQL Server 인증을 사용하여 TCP/IP 프로토콜을 통해 원격으로 연결할 수 없습니다.
참고 항목
관리자 권한 사용자 연결은 sys.dm_exec_sessions(Transact-SQL) DMV(동적 관리 뷰)에만 표시되지만 sys.dm_exec_connections(Transact-SQL) 보기에는 표시되지 않습니다.
명명된 파이프 프로토콜을 사용하는 로컬 및 원격 연결과 공유 메모리 프로토콜을 사용하는 로컬 연결은 계속 제대로 작동합니다.
또한 다음 메시지는 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 시작 시 오류 메시지가 그에 따라 변경됩니다.