나는 오늘 Dynamic Ports
내 동료 중 한 명과 토론을 하고 있었으며 그들이 어떻게 작동하는지 명확히하는 데 도움을 줄 수있었습니다.
첫 번째 질문 : 경우 IPALL
TCP Dynmaic Ports
설정이 특정 번호 (1971 말)는 1971 정적 포트 또는 현재 1971이며, 미래의 어떤 시점에서 변경 될 수 있습니다 동적 포트를 가지고 그 의미를 않는 것입니다.
두 번째 질문 : 이것이 제가 가장 궁금한 질문입니다. IPALL
TCP Dynmaic Ports
수십 번의 인스턴스 재시작을 통해 몇 년 동안 동일한 포트 ( 설정 값 )를 가진 인스턴스가 있습니다. 실제로 인스턴스가 다시 시작된 후 동적 포트가 실제로 변경되는 이유는 무엇입니까?
답변
이 기사 : 특정 포트에서 수신 대기하도록 SQL Server를 구성하는 방법 은 다음과 같습니다.
동적 포트 할당
동적 포트 할당을 사용하도록 SQL Server 인스턴스를 구성하고 SQL Server 인스턴스를 아직 다시 시작하지 않은 경우 레지스트리 값은 다음과 같이 설정됩니다.
TCPDynamicPorts = 공백
TCPPort = 0
그러나 동적 포트 할당을 사용하도록 SQL Server 인스턴스를 구성하고 SQL Server 인스턴스를 다시 시작하면 레지스트리 값이 다음과 같이 설정됩니다.
TCPDynamicPorts = 사용되는 현재 포트
TCPPort = 사용되는 현재 포트
정적 포트 할당 :
정적 포트를 사용하도록 SQL Server 인스턴스를 구성하고 SQL Server 인스턴스를 아직 다시 시작하지 않은 경우 레지스트리 값은 다음과 같이 설정됩니다.
TCPDynamicPorts = 마지막으로 사용 된 포트
TCPPort = 다음에 다시 시작한 후 사용할 새 정적 포트. 서버 네트워크 유틸리티를 사용하여 설정 한 새 정적 포트
그러나 정적 포트를 사용하도록 SQL Server 인스턴스를 구성하고 SQL Server 인스턴스를 다시 시작하면 레지스트리 값이 다음과 같이 설정됩니다.
TCPDynamicPorts = 공백
TCPPort = 서버 네트워크 유틸리티를 사용하여 설정 한 새로운 정적 포트
두 번째 질문에 –
명명 된 SQLServer를 시작할 때마다 할당 된 포트를 사용합니다. 포트가 다른 프로그램 에서 사용되는 경우 SQL Server는 다시 시작할 때 다른 포트를 선택합니다. 즉, 동적 포트는 처음 시작할 때 선택되며 일반적으로 향후 다시 시작할 때 (레지스트리에 저장 됨)를 통해 동일하게 유지 됩니다. 다른 프로그램에서 사용하면 SQL Server는 새 포트를 선택합니다. 참고 : Prod Server의 경우 보안 및 관리 용이성 이유로 고정 포트만 사용합니다.
참고 : 더 멋진 점은 다음과 같습니다.
동적 포트가 사용 중인지 T-SQL을 사용하지 않는지 확인하십시오.
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
netstat -ano
cmdline을 사용 하여 확인할 수 있습니다 .
또한 클라이언트 측의 레지스트리에서 이전에 캐시 된 내용을 확인하여 SQL 서버에 연결하는 데 사용하는 포트를 확인할 수 있습니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect