Fouten oplossen met betrekking tot de sector van de systeemschijf groter dan 4 kB

Dit artikel bevat oplossingen voor het oplossen van fouten tijdens de installatie of het starten van een exemplaar van SQL Server op Windows 11 en Windows Server 2022. Dit artikel is geldig voor alle uitgebrachte versies van SQL Server.

De fouten die in dit artikel worden besproken, hebben betrekking op de sectorgrootte van de systeemschijf groter dan 4 kB.

Van toepassing op: SQL Server alle versies

Symptomen

Scenario 1: U installeert elke versie van SQL Server op een Windows 11 apparaat. Vervolgens ziet u fouten die vergelijkbaar zijn met het volgende bericht voor het onderdeel Database Engine Services van 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. 

Scenario 2: U installeert een versie van SQL Server op een Windows 10-apparaat. Vervolgens voert u een upgrade uit van het besturingssysteem op het apparaat naar Windows 11. Wanneer u probeert SQL Server te starten op een Windows 11 apparaat, kan de service niet worden gestart. In het SQL Server foutenlogboek ziet u vermeldingen die vergelijkbaar zijn met:

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. 

Scenario 3: U installeert een versie van SQL Server op een Windows 10-apparaat. Vervolgens voert u een upgrade uit van het besturingssysteem op het apparaat naar Windows 11. Wanneer u probeert SQL Server te starten op een Windows 11 apparaat, kan de service niet worden gestart. In het SQL Server foutenlogboek ziet u vermeldingen die vergelijkbaar zijn met:

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 

Scenario 4: U installeert LocalDB op een Windows 11-apparaat. De installatie mislukt en in het SQL Server foutenlogboek ziet u vermeldingen die vergelijkbaar zijn met:

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.

In het gebeurtenislogboek van Windows 11 toepassing ziet u vermeldingen die vergelijkbaar zijn met:

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

Opmerking

U kunt de fouten tegenkomen die in de vorige scenario's zijn vermeld voor een SQL Server exemplaar dat u handmatig hebt geïnstalleerd of op een LocalDB-exemplaar dat is geïnstalleerd door toepassingen.

Scenario 5: Als u een sector groter dan 4 kB probeert te gebruiken, ziet u het volgende foutbericht:

Error: 5179, Severity: 16, State: 1.
Cannot use file 'data file path', because it is on a volume with sector size 8192. SQL Server supports a maximum sector size of 4096 bytes. Move the file to a volume with a compatible sector size.

Oorzaak

Tijdens het opstarten van de service start SQL Server het herstelproces van de database om de consistentie van de database te garanderen. Onderdeel van dit databaseherstelproces omvat consistentiecontroles op het onderliggende bestandssysteem voordat u systeem- en gebruikersdatabasebestanden probeert te openen.

Op systemen waarop Windows 11 wordt uitgevoerd, bieden sommige nieuwe opslagapparaten en apparaatstuurprogramma's een schijfsectorgrootte die groter is dan de ondersteunde sectorgrootte van 4 kB.

Wanneer dit gebeurt, kan SQL Server niet worden gestart vanwege het niet-ondersteunde bestandssysteem, omdat SQL Server momenteel opslaggrootten van 512 bytes en 4 kB ondersteunt.

U kunt controleren of u dit specifieke probleem ondervindt door de opdracht uit te voeren:

fsutil fsinfo sectorinfo <volume pathname>

Als u bijvoorbeeld het volume E: wilt analyseren, voert u de volgende opdracht uit:

fsutil fsinfo sectorinfo E:

Zoek naar de waarden PhysicalBytesPerSectorForAtomicity en PhysicalBytesPerSectorForPerformance, geretourneerd in bytes, en als ze verschillen, behoudt u de grootste om de grootte van de schijfsector te bepalen. Een waarde van 4096 geeft een opslaggrootte van 4 kB aan.

Houd ook rekening met het Windows-ondersteuningsbeleid voor ondersteuning van bestandssysteem en opslagsector. Zie het artikel Microsoft-ondersteuningsbeleid voor harde schijven in de sector 4 kB in Windows voor meer informatie.

Opmerking

Er is geen uitgebrachte versie van SQL Server die compatibel is met sectorgrootten groter dan 4 kB. Zie de ondersteuningsgrenzen voor de sectorgrootte van harde schijven in SQL Server artikel voor meer informatie.

Oplossingen

Microsoft onderzoekt dit probleem momenteel.

Overweeg een van de volgende oplossingen:

  • Als u meerdere stations op dit systeem hebt, kunt u een andere locatie opgeven voor de databasebestanden nadat de installatie van SQL Server is voltooid. Zorg ervoor dat het station een ondersteunde sectorgrootte weergeeft bij het uitvoeren van query's op de fsutil opdrachten. SQL Server ondersteunt momenteel sectoropslaggrootten van 512 bytes en 4096 bytes.

  • U kunt een registersleutel toevoegen, waardoor het gedrag van Windows 11 en later vergelijkbaar is met Windows 10. Hierdoor wordt de sectorgrootte geëmuleerd als 4 kB. Als u de ForcedPhysicalSectorSizeInBytes registersleutel wilt toevoegen, gebruikt u de registeropdrachten Editor of voert u de opdrachten uit zoals beschreven in de sectie PowerShell als beheerder. U moet het apparaat opnieuw opstarten nadat u de registersleutel hebt toegevoegd om deze wijziging door te voeren.

    Belangrijk

    Deze sectie bevat stappen die u laten zien hoe u het Windows-register kunt wijzigen. Als u het register op onjuiste wijze wijzigt, kunnen er echter grote problemen optreden. Het is dan ook belangrijk dat u deze stappen zorgvuldig uitvoert. Maak een back-up van het register voordat u wijzigingen aanbrengt. Als er een probleem optreedt, kunt u het register altijd nog herstellen. Zie het artikel Een back-up van het register maken en herstellen in Windows voor meer informatie over het maken van een back-up en het herstellen van het register .

    Register Editor

    1. Navigeer naar Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. Wijs in het menu Bewerkende optie Nieuw aan en selecteer vervolgens Waarde voor meerdere tekenreeksen. Geef het de ForcedPhysicalSectorSizeInBytesnaam .
    3. Wijzig de nieuwe waarde en typ in * 4095. Selecteer OK en sluit de Register-editor.

    Opdrachtprompt als beheerder

    1. Voeg de sleutel toe.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Controleer of de sleutel is toegevoegd.

      REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
      

    PowerShell als beheerder

    1. Voeg de sleutel toe.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Controleer of de sleutel is toegevoegd.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • U kunt SQL Server door de traceringsvlag 1800 op te geven. Zie DBCC TRACEON voor meer informatie. Deze traceringsvlag is niet standaard ingeschakeld. Traceringsvlag 1800 dwingt SQL Server om 4 kB te gebruiken als sectorgrootte voor alle lees- en schrijfbewerkingen. Wanneer u SQL Server uitvoert op schijven met een fysieke sectorgrootte groter dan 4 kB, wordt met de traceringsvlag 1800 een systeemeigen 4 kB-station gesimuleerd. Dit is de ondersteunde sectorgrootte voor SQL Server.

  • Installeer SQL Server op beschikbare Windows 10 apparaten.

Meer informatie

Windows 11 systeemeigen NVMe-stuurprogramma's zijn bijgewerkt met de werkelijke sectorgrootte die rechtstreeks door de NVMe-opslagapparaten wordt gerapporteerd. Dit is gedaan in plaats van te vertrouwen op de informatie die is geëmuleerd van de bestandssysteemstuurprogramma's.

De Windows 10 stuurprogramma's rapporteren niet de grootte van de bronsector van de fysieke opslag.

De verbeterde Windows 11 stuurprogramma's negeren de emulatie die algemene NVMe-opslagapparaten gebruiken. Als voorbeeld fsutil geeft u een sectorgrootte van 8 kB of 16 kB weer, in plaats van de vereiste sectorgrootte van 4 kB te emuleren die is vereist voor Windows.

De volgende tabel bevat een vergelijking van de sectorgrootten die door de besturingssystemen zijn gerapporteerd. In dit voorbeeld ziet u de verschillen tussen Windows 10 en Windows 11 met hetzelfde opslagapparaat. Voor de waarden van PhysicalBytesPerSectorForAtomicity en PhysicalBytesPerSectorForPerformancewordt Windows 10 4 kB weergegeven en Windows 11 16 kB.

Voorbeelduitvoer van 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

Zie ook