Dela via


Felsöka fel som rör systemdiskens sektorstorlek som är större än 4 KB

Den här artikeln innehåller lösningar för felsökning av fel under installation eller start av en instans av SQL Server i Windows. Den här artikeln är giltig för alla versioner av SQL Server.

I den här artikeln beskrivs fel som rör systemdiskens sektorstorlek som är större än 4 KB. När du försöker installera en SQL Server-instans på en dator med en systemdisksektorstorlek som är större än 4 kB kan följande scenarier uppstå:

Gäller för: SQL Server alla versioner

Scenario 1: Flytta filen till en volym med en kompatibel sektorstorlek

Om du försöker använda en sektorstorlek som är större än 4 kB visas följande felmeddelande:

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.

Scenario 2: Det gick inte att hitta starthandtaget för databasmotorn

När du försöker installera en SQL Server-instans på en virtuell Azure-dator (VM) som kör Windows misslyckas installationen och du får följande felmeddelande i SQL Server-felloggen när motorn försöker starta under installationen:

Det går inte att använda filen ...\master.mdf eftersom den ursprungligen var formaterad med sektorstorlek 4096 och nu finns på en volym med sektorstorleken 8192. Flytta filen till en volym med en sektorstorlek som är samma som eller mindre än den ursprungliga sektorstorleken.

Dessutom kan du se följande information i Summary.txt loggfilen i sql Server-installationsmappen:

Detailed results:
  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:          0x851A0019
  Error description:             Could not find the Database Engine startup handle.

Mer information finns i SQL Server-installationen misslyckas med sektorstorleksfel på en virtuell Windows Server 2022 Azure-dator.

Scenario 3: Det gick inte att vänta på återställningshandtaget för databasmotorn

När du installerar någon version av SQL Server visas fel som liknar följande meddelande för Database Engine Services-komponenten i 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. 

Du kan också se följande fel i SQL Server-felloggen:

2025-02-26 20:01:16.79 spid14s     Starting up database 'master'.
2025-02-26 20:01:16.80 spid14s     Error: 5178, Severity: 16, State: 1.
2025-02-26 20:01:16.80 spid14s     Cannot use file 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 8192. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

Scenario 4: Det har funnits 256 feljusterade logg-IO:er som krävde att falla tillbaka till synkron I/O

Du installerar valfri version av SQL Server på en Windows 10-enhet. Sedan uppgraderar du operativsystemet (OS) på enheten till Windows 11. När du försöker starta SQL Server på en Windows 11-enhet startar inte tjänsten. I SQL Server-felloggen märker du följande inlägg:

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 5

Du installerar valfri version av SQL Server på en Windows 10-enhet. Sedan uppgraderar du operativsystemet på enheten till Windows 11. När du försöker starta SQL Server på en Windows 11-enhet startar inte tjänsten. I SQL Server-felloggen ser du följande poster:

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 6: Flytta filen till en volym med en sektorstorlek som är samma som eller mindre än den ursprungliga sektorstorleken

Du installerar LocalDB på en Windows 11-enhet och installationen misslyckas. I SQL Server-felloggen ser du följande poster:

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.

I händelseloggen för Windows 11-program ser du följande poster:

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

Obs!

Du kan stöta på de fel som nämns i tidigare scenarier för en SQL Server-instans som du installerade manuellt eller på en LocalDB-instans som installerats av program.

Orsak

Under tjänststarten påbörjar SQL Server databasåterställningsprocessen för att säkerställa databaskonsekvens. En del av den här databasåterställningsprocessen omfattar konsekvenskontroller på det underliggande filsystemet innan du försöker öppna system- och användardatabasfiler.

Vissa nya lagringsenheter och enhetsdrivrutiner exponerar en disksektorstorlek som är större än den sektorstorlek på 4 KB som stöds.

När det här problemet uppstår kan SQL Server inte starta på grund av det filsystem som inte stöds eftersom SQL Server för närvarande har stöd för sektorlagringsstorlekar på 512 byte och 4 KB.

Du kan bekräfta att du stöter på det här specifika problemet genom att köra kommandot:

fsutil fsinfo sectorinfo <volume pathname>

Om du till exempel vill analysera E:-volymen kör du följande kommando:

fsutil fsinfo sectorinfo E:

Leta efter värdena PhysicalBytesPerSectorForAtomicity och PhysicalBytesPerSectorForPerformance, som returneras i byte, och om de är olika behåller du den största för att fastställa disksektorns storlek. Värdet 4096 anger en sektorlagringsstorlek på 4 KB.

Tänk dessutom på Windows-supportprincipen för stöd för filsystem och lagringssektorstorlek. Mer information finns i artikeln Microsofts supportprincip för 4 KB-sektorhårdenheter i Windows .

Notera

Det finns ingen version av SQL Server som är kompatibel med sektorstorlekar som är större än 4 kB. Mer information finns i artikeln Stödgränser för sektorsstorlek för hårddiskenheter i SQL Server .

Lösningar

  • För närvarande krävs registernyckeln ForcedPhysicalSectorSizeInBytes för att installera SQL Server när du använder moderna lagringsplattformar, till exempel NVMe, som ger en sektorstorlek som är större än 4 kB. Den här registernyckeln för Windows-operativsystemet tvingar sektorstorleken att emuleras som 4 KB.

    Om du vill lägga till registernyckeln ForcedPhysicalSectorSizeInBytes använder du Registereditorn eller kör kommandon enligt beskrivningen i kommandotolken eller PowerShell-avsnittet . Du behöver inte lägga till spårningsflagga 1800 för det här scenariot.

    Viktigt!

    Det här avsnittet innehåller steg som beskriver hur du ändrar Windows-registret. Allvarliga problem kan uppstå om du modifierar registret felaktigt. Följ därför noggrant dessa steg. För extra skydd, säkerhetskopiera registret innan du ändrar det. Då kan du återställa registret om det uppstår problem. Mer information om hur du säkerhetskopierar och återställer registret finns i artikeln Säkerhetskopiera och återställa registret i Windows .

    1. Kör Registereditorn som administratör.
    2. Gå till Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    3. Välj Redigera>Nytt>Flersträngsvärde och namnge det som ForcedPhysicalSectorSizeInBytes.
    4. Högerklicka på namnet, välj Ändra och skriv i fältet * 4095.
    5. Välj OK och stäng Registereditorn.

    Du måste starta om enheten när du har lagt till registernyckeln för att ändringen ska börja gälla.

  • Om du inte lägger till registernyckeln och du har flera enheter i det här systemet kan du ange en annan plats för databasfilerna när installationen av SQL Server har slutförts. Kontrollera att enheten reflekterar en sektorstorlek som stöds vid frågning om fsutil kommandona. SQL Server stöder för närvarande sektorlagringsstorlekar på 512 byte och 4 096 byte.

Försiktighet

Om du redan har skapat en lagringspool med diskar som har en sektorstorlek större än 4 kB som värd för SQL Server-filer måste du först ta bort lagringspoolen, tillämpa någon av de felsökningsmetoder som anges i den här artikeln och sedan återskapa lagringspoolen innan du försöker installera SQL Server i lagringspoolen eller poolerna.

Mer information

Windows 11-interna NVMe-drivrutiner uppdaterades för att inkludera den faktiska sektorstorleken som rapporterats direkt av NVMe-lagringsenheterna. Detta gjordes i stället för att förlita sig på den information som emuleras från filsystemdrivrutinerna.

Windows 10-drivrutinerna rapporterar inte källsektorstorleken för den fysiska lagringen.

De förbättrade Windows 11-drivrutinerna bortser från den emulering som vanliga NVMe-lagringsenheter använder. Till exempel fsutil visar en sektorstorlek på 8 KB eller 16 KB, i stället för att emulera den nödvändiga sektorstorleken på 4 KB som krävs av Windows.

Följande tabell innehåller en jämförelse av de sektorstorlekar som rapporterats av operativsystemen. Det här exemplet illustrerar skillnaderna mellan Windows 10 och Windows 11 med samma lagringsenhet. För värdena PhysicalBytesPerSectorForAtomicity för och PhysicalBytesPerSectorForPerformancevisar Windows 10 4 KB och Windows 11 visar 16 KB.

Exempel på utdata från 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