[MSSQL] 2017(CU23 이후) , 2019(CU9 이후) NetBIOS 없이 이중화 하는 방법

Symptoms

  • Windows hostname 등록 시 변경되는 registry와 MSSQL 2017(CU23 이후) , 2019(CU9 이후)의 상관관계

Environment

  • MSSQL 2017(CU23 이후) , 2019(CU9 이후)

Cause

Solution

1. MSSQL의 변화
 > Failover Cluster Instance (FCI)를 위해 가상이름 또는 local hostname 과 MSSQL Server name이 동일하지 않을 시 정상 기능을 하지 못하게 됨.
 > MSSQL Server name = local hostname 비교 후 일치하지 않으면, MSSQL Server name = NetBIOS name 비교하는 방식.

2. 해결방안
  (1) NetBIOS 가상이름을 통한 이중화 방법
       > (첨부파일 참조)
  (2) local hostname registry 변경을 통한 회피

3. MSSQL Server name 변경

-- a. 현재 서버명 삭제
SP_DROPSERVER '현재의 MSSQL서버명'
-- b. 새로운 서버명 추가
SP_ADDSERVER '바꿀서버명', 'local'

-- c. MSSQL 서비스 재시작
-- d. 변경된 서버명 확인
SELECT @@servername

4. registry 수정
 > Windows 에서는 hostname 등록 또는 변경 시 해당 값을 아래의 registry에 등록하게 되며, 이를 적용하기 위해서는 재부팅을 필요로 함.(Hostname을 수정하게 되면 reboot 해야되는 이유)
 > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName
image-1622420507575.png

 > 양 서버 동일한 이름으로 변경.
 > 이 값은 수정이 가능하며, NetBIOS 상에 등록되지 않기 때문에 양 서버가 동일한 값을 가진다고 하여도 충돌이 나지 않음.
 > 변경 시 서버의 ComputerName만 변경되며, 실제 Hostname은 변경되지 않음.

5. MSSQL 확인

 – 변경 전
image-1622421133616.png
  > MSSQL Server name만 변경된 상태에서 ComputerName 수정 후 reboot하지 않은 상태이다.
  > 기동은 정상적으로 되나, SSMS(SQL Server Management Service)상에서 (?)상태로 보이며, 일부 기능(SQL Server Agent 등..) 동작하지 않음.

 – 변경 후
image-1622427095010.png
 > 실제 hostname은 변경되지 않았지만, MSSQL 에서 감지하는 ComputerName은 변경됨을 확인 할 수 있다.