MS SQL로 공부를 할 필요가 생겨서 설치를 하게 되었다.
설치 과정중에 오류가 발생
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Detailed results:
Feature: 데이터베이스 엔진 서비스
Status: 실패
Reason for failure: 기능 설치 프로세스 중에 오류가 발생했습니다.
Next Step: 다음 정보를 사용하여 오류를 해결하고 이 기능을 제거한 후 설치 프로세스를 다시 실행하십시오.
Component name: SQL Server 데이터베이스 엔진 서비스 인스턴스 기능
Component error code: 0x851A001A
Error description: 데이터베이스 엔진 복구 핸들을 기다리지 못했습니다. SQL Server 오류 로그를 참조하여 가능한 원인을 확인하십시오.
Error help link: https://go.microsoft.com/fwlink?LinkId=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=16.0.1000.6&EvtType=0xD15B4EB2%400x4BDAF9BA%401306%4026&EvtType=0xD15B4EB2%400x4BDAF9BA%401306%4026
Feature: SQL Browser
Status: 통과
Feature: SQL 기록기
Status: 통과
Feature: 설치 지원 파일
Status: 통과
Rules with failures or warnings:
Global rules:
경고 IsFirewallEnabled Windows 방화벽이 사용됩니다. 원격 액세스를 사용할 수 있게 적절한 포트가 열려 있어야 합니다. 각 기능에 대해 열 포트에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?linkid=2162127에서 규칙 설명서를 참조하세요.
Rules report file: C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Log\20230113_100828\SystemConfigurationCheck_Report.htm
---------------------------------------------------------------------------------------------------------------------------------------------------------------
위의 에러 로그파일을 살펴보면,
2가지 문제점 중 하나 또는 2가지 전부로 인한 문제 때문에 에러가 발생했다고 판단되었다.
1. 데이터베이스 엔진 복구 핸들을 대기 하지 못했습니다.
2. Windows 방화벽이 사용됩니다. 원격 액세스를 사용할 수 있게 적절한 포트가 열려 있어야 합니다.
이틀동안 꼬박 삽질을 한 끝에 원인을 찾았으니, 2번째인 방화벽의 포트를 오픈하는 걸로는 해결이 되지 않고, 1번의 에러의 직접적인 원인으로는 Windows에서 MS SQL을 삼성전자의 NVME M.2에 설치할때 문제가 생기는 것이었다.
마이크로소프트 공식포럼에도 나오듯이 SQL server 가 설치되는 디스크의 섹터가 4KB보다 작아야 하는데,
커서 발생하는 문제였다.
확인을 위해서
cmd창 관리자 권한으로 실행 ( 윈도우 검색에서 cmd를 넣고, 오른쪽마우스를 클릭하여 관리자 권한으로 실행을 클릭하면 된다.)
fsutil fsinfo sectorinfo C: 을 입력하면 된다.
PhysicalBytesPerSectorForPerformance: 부분이 16384byte 였다. (16KB 정도로 4KB 보다 4배 가량 크다.)
4KB로 디스크 섹터 변경을 위해서는 레지스트리를 건드려야 하는데......
* 주의사항 : 아래 부분들은 권장하지 않는 사항이다.
필자의 pc는 레지스트리를 건드리고 난 후 DPC WATCHDOG VIOLATION이라는 블루스크린이 매 부팅 때마다 뜨며 윈도우가 알아서 매번 자동복구를 돌리는데, 자동복구가 완벽하게 되지 않고 부팅때마다 블루스크린이 뜨며 제대로된 부팅이 되지 않았다. 이는 레지스트리를 함부로 바꿔서 일어나는 블루스크린으로 추정된다.
윈도우에 깔려있는 SQL server에서는 4KB의 default값을 요구하지만, 기존의 윈도우는 설치시 삼성 ssd의 16KB로 최적화 되어 있어서 일어나는 오류이거나 기존의 default값의 수정으로 인한 NVME의 하드웨어적인 불안정성으로 인한 충돌때문에 발생하는 것으로 보인다.
SQL server 사용을 위한 근본해결책은
NVME를 디스크섹터 default값이 작은 타사의 제품으로 바꾸거나, MS-SQL대신 Oracle이나 다른 SQL DBMS를 추천한다. (모든 NVME 제품을 다 확인해본것은 아니지만, 하이닉스 NVME 최신 제품(p31모델)의 default값은 4096으로 확인되었다.)
SQL Server를 사용하려면 우선은 삼성제품은 피하는 것이 좋은 것으로 보인다. (얼마전에 삼성으로 갈았는데.. )
결국 필자는
1. 타사의 NVME가 설치된 다른 pc로 설치를 완료하였고,
2. 기존의 PC 복구는
내 파일 유지라는 옵션을 선택하여 윈도우를 재설치하는 방향으로 해결하였다.
재설치 후에는 블루스크린의 문제도 해결되었고, 아무런 충돌없이 윈도우가 정상적으로 돌아가고 있다.
이 방법은 기존에 MS office나 한글등의 파일들이 전부 삭제되고, 개인작업들을 통해 생성된 파일들은 그대로 남아있는 방법이다.) 시간이 굉장히 오래 걸리지만, 모든항목 제거보다는 중요한 파일들을 살릴수 있는 방법이기에 권장하는 방법이다.
검색을 해보면, 삼성 ssd에서 레지스트리를 건드리는 방법을 권하는 경우도 많은데 필자와 같은 최악의 상황이 발생할 수 있으므로 권장하지 않으며 다른 pc도 없고 당장 SQL server 실습을 해봐야하는 상황이라면, 윈도우 초기화쯤이라는 담대한 마인드를 가지고 감내할 수 있는 상황이라면, 아래 방법으로 하는 것도 나쁘지 않다. (이러한 시도로 블루스크린 없이 계속 잘 사용하는 사람들도 분명 검색했을때 존재 했었기에..)
확인후에 다시 cmd창에서 똑같이 관리자 권한인 상태로
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
그대로 드래그 하여 준다.
그럼 곧바로 재부팅후에
fsutil fsinfo sectorinfo C: 입력후에
다시 그대로 설치를 진행해주면 된다.
방화벽도 건드려보고 SQL server 2019가 윈도우 11과 호환이 되지 않아서 발생하는 오류라고도 나와서 높은 버전인 2022버전으로도 해봤으나 오류가 그대로였는데, 삼성 NVME의 default 섹터 스토리지 크기가 문제였던 것이다.
이렇게 해결을 해주면 2019나 2022 전부 잘 설치가 된다. (버전문제가 아니라는 점)
공식포럼에서는 레지스트리를 건드리는 것에 주의를 해야한다고 나오지만, 다행히도 별 문제가 있었다.
위의 질문에서도 대답을 찾을수 있었다.
'Trouble shooting(TS)' 카테고리의 다른 글
해결중 (0) | 2024.03.20 |
---|---|
[Python/Troubleshooting] VS code 아나콘다 가상환경 사용시 ipykernel 설치해도 안되는 문제 (0) | 2024.03.19 |
[git] too many arguments (0) | 2023.01.06 |
[Github] 삭제된 Repositories 복구하기 (0) | 2022.09.14 |
Colab에 Machinelearning과 Deeplearning을 위해 Dataset 불러오는 방법(Google Drive 연동) (0) | 2022.04.14 |