4 KB보다 큰 시스템 디스크 섹터 크기 관련 오류 문제 해결

이 문서에서는 4 KB보다 큰 시스템 디스크 섹터 크기와 관련된 설치 또는 SQL Server Windows 11 문제를 해결하기 위한 해결 방법을 제공합니다.

증상

시나리오 #1: Windows 11 장치에 SQL Server 2019, SQL Server 2017 또는 SQL Server 2016을 설치하면 데이터베이스 엔진 Services 구성 요소에 대해 다음과 같은 오류가 SQL Server.

Feature: Database Engine Services 
Status: Failed 
Reason for failure: An error occurred during the setup process of the feature. 
Next Step: Use the following information to resolve the error, uninstall this feature, and then run the setup process again. 
Component name: SQL Server Database Engine Services Instance Features 
Component error code: 0x851A001A 
Error description: Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes. 

시나리오 #2: SQL Server 2019, SQL Server 2017 또는 SQL Server 2016을 Windows 10 설치합니다. 그런 다음 장치의 OS를 업그레이드하여 Windows 11. Windows 11 장치에서 SQL Server 2019, SQL Server 2017 또는 SQL Server 2016을 시작하려고 시도하면 서비스가 시작되지 못하고 SQL Server 오류 로그에 다음 항목이 표시됩니다.

2021-11-05 23:42:47.14 spid9s There have been 256 misaligned log IOs which required falling back to synchronous IO. The current IO is on file C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\master.mdf. 

시나리오 #3: SQL Server 2019, SQL Server 2017 또는 SQL Server 2016을 Windows 10 설치합니다. 그런 다음 장치의 OS를 업그레이드하여 Windows 11. SQL Server 장치에서 SQL Server 2019, SQL Server 2017 또는 SQL Server 2016을 시작하려고 시도하면 서비스가 Windows 11 시작되지 않습니다. 오류 SQL Server 로그에는 다음 항목이 표시됩니다.

Faulting application name: sqlservr.exe, version: 2019.150.2000.5, time stamp: 0x5d8a9215 
Faulting module name: ntdll.dll, version: 10.0.22000.120, time stamp: 0x50702a8c 
Exception code: 0xc0000005 
Fault offset: 0x00000000000357ae 
Faulting process id: 0x1124 
Faulting application start time: 0x01d7bf67449d262c 
Faulting application path: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe 
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll 

시나리오 #4: 설치 LocalDB 장치에 Windows 11 설치합니다. 설치가 실패하고 SQL Server 로그에 다음 항목이 표시됩니다.

2021-12-15 23:25:04.28 spid5s      Cannot use file 'C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\TestInstance\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 16384. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

응용 Windows 11 로그에는 다음 항목이 표시됩니다.

Message            : Windows API call WaitForMultipleObjects returned error code: 575. Windows system error message is: {Application Error}
                     The application was unable to start correctly (0x%lx). Click OK to close the application.
                     Reported at line: 3621.
Source             : SQLLocalDB 11.0

참고

수동으로 설치하거나 응용 프로그램에서 설치한 SQL Server 인스턴스에 대해 이전 시나리오에서 언급한 오류가 발생할 LocalDB 있습니다.

원인

서비스를 시작하는 SQL Server 데이터베이스의 일관성을 보장하기 위해 데이터베이스 복구 프로세스를 시작해야 합니다. 이 데이터베이스 복구 프로세스의 일부분에는 시스템 및 사용자 데이터베이스 파일 열기 활동을 시도하기 전에 파일 시스템에 대한 일관성 확인이 필요합니다.

이 Windows 11 실행하는 시스템에서 일부 새 저장소 장치 및 장치 드라이버는 지원되는 4 KB 섹터 크기보다 큰 디스크 섹터 크기를 노출합니다.

이 경우 SQL Server 512비트 및 4 KB의 섹터 저장소 크기를 SQL Server 지원하기 때문에 지원되지 않는 파일 시스템으로 인해 파일을 시작할 수 없습니다.

다음 명령을 실행하여 이 특정 문제가 발생하는지 확인할 수 있습니다.

fsutil fsinfo sectorinfo <volume pathname>

예를 들어 E: 볼륨을 분석하기 위해 다음 명령을 실행합니다.

fsutil fsinfo sectorinfo E:

에서 반환되는 PhysicalBytesPerSectorForAtomicity값을 에 대해 살펴 봐야 합니다. 값이 4096이면 섹터 저장소 크기가 4 KB입니다.

또한 파일 시스템 및 Windows 섹터 크기 지원에 대한 Windows 지원 정책을 알고 있어야 합니다. 자세한 내용은 4 KB 섹터 하드 드라이브에 대한 Microsoft 지원 Windows 참조하세요.

참고

4 KB보다 큰 섹터 크기와 호환되는 릴리스된 SQL Server 버전이 없습니다. 자세한 내용은 하드 디스크 드라이브 섹터 크기 지원 경계를 SQL Server 참조하세요.

해결

Microsoft는 현재 이 문제를 조사하고 있습니다.

다음 솔루션 중 하나를 고려하십시오.

  • 이 시스템에 여러 드라이브가 있는 경우 설치가 완료된 후 데이터베이스 파일의 다른 위치를 지정할 SQL Server 있습니다. 명령을 쿼리할 때 드라이브에 지원되는 섹터 크기를 반영하는 fsutil 지 확인 SQL Server 현재 512비트 및 4096비트의 섹터 저장소 크기를 지원하고 있습니다.

  • 레지스트리 키를 추가하면 레지스트리 키가 Windows 11 동작이 Windows 10. 이렇게 하면 섹터 크기가 4 KB 크기로 에뮬레이터됩니다. 레지스트리 키를 ForcedPhysicalSectorSizeInBytes 추가하기 위해 레지스트리 편집기를 사용하거나 관리자 권한으로 실행되는 Windows 명령 프롬프트 또는 PowerShell에서 다음 명령 중 하나를 실행할 수 있습니다.

    중요

    이 섹션에는 레지스트리를 수정하는 방법을 설명하는 Windows 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 레지스트리를 백업 및 복원하는 방법에 대한 자세한 내용은 레지스트리 백업 및 복원 방법 문서에서 Windows 참조하십시오.

    레지스트리 편집기

    1. Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device(으)로 이동합니다.
    2. 편집 메뉴에서 새로 고치기,다중 문자열 값을 선택합니다. 이름을 로 지정합니다 ForcedPhysicalSectorSizeInBytes.
    3. 새 값을 수정하고 를 입력합니다 * 4095. 확인 을 클릭 하고 레지스트리 편집기를 닫습니다.

    관리자 권한으로 명령 프롬프트

    1. 키를 추가합니다.
    REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
    
    1. 키가 추가된 경우 유효성을 검사합니다.
    REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
    

    관리자 권한으로 PowerShell

    1. 키를 추가합니다.
    New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"
    
    1. 키가 추가된 경우 유효성을 검사합니다.
    Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
    
  • 추적 플래그 1800을 SQL Server 사용하여 시작할 수 있습니다. 자세한 내용은 DBCC TRACEON을 참조하세요. 이 추적 플래그는 기본적으로 사용하도록 설정되어 있지 않습니다. 추적 플래그 1800은 SQL Server 읽기 및 쓰기의 섹터 크기로 4 KB를 강제로 사용하게 합니다. 실제 섹터 SQL Server 디스크에서 실행 중인 경우 추적 플래그 1800을 사용하면 기본 4 KB 드라이브를 시뮬레이트합니다. 이는 섹터 크기에 대해 지원되는 SQL Server.

  • 대신 SQL Server 디바이스에 Windows 10 설치합니다.

추가 정보

Windows 11 시스템 드라이버에서 에뮬레이터된 정보를 사용하지 않고 NVMe 저장소 장치에서 직접 보고하는 실제 섹터 크기를 포함하기 위해 네이티브 NVMe 드라이버가 업데이트되었습니다.

이 Windows 10 드라이버는 실제 저장소의 원본 섹터 크기를 보고하지 않습니다.

향상된 Windows 11 드라이버는 일반적인 NVMe 저장소 장치에서 사용하는 에뮬ATION을 무시합니다. 예를 들어 fsutil 섹터 크기를 8 KB 또는 16 KB로 표시하고 섹터에 필요한 4 KB 섹터 크기를 에뮬레이터에 Windows.

다음 표에서는 운영 체제에서 보고하는 섹터 크기를 비교합니다. 이 예에서는 동일한 저장 장치를 사용하는 Windows 10 Windows 11 차이점을 보여 제공합니다. 의 값으로 PhysicalBytesPerSectorForAtomicityWindows 10 4 KB를 표시하고 Windows 11 16 KB를 표시합니다.

샘플 출력 fsutil fsinfo sectorinfo <volume pathname>

Windows 10 Windows 11
LogicalBytesPerSector : 512 LogicalBytesPerSector : 512
PhysicalBytesPerSectorForAtomicity : 4096 PhysicalBytesPerSectorForAtomicity : 16384
PhysicalBytesPerSectorForPerformance : 4096 PhysicalBytesPerSectorForPerformance : 16384
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096 FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
Device Alignment : Aligned (0x000) Device Alignment : Aligned (0x000)
Partition alignment on device : Aligned (0x000) Partition alignment on device : Aligned (0x000)
No Seek Penalty No Seek Penalty
Trim Supported Trim Supported
Not DAX capable Not DAX capable
Not Thinly-Provisioned Not Thinly-Provisioned

참고 항목