Felsöka fel som rör systemdisksektorstorlek 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 på Windows 11 och Windows Server 2022. Den här artikeln är giltig för alla versioner av SQL Server.
De fel som beskrivs i den här artikeln gäller systemdisksektorstorlek som är större än 4 kB.
Gäller för: SQL Server alla versioner
Symptom
Scenario nr 1: Du installerar alla versioner av SQL Server på en Windows 11 enhet. Sedan visas fel som liknar följande meddelande för komponenten Database Engine Services 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.
Scenario nr 2: Du installerar alla versioner 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 och i SQL Server felloggen ser du poster som liknar:
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 nr 3: Du installerar alla versioner 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 poster som liknar:
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 nr 4: Du installerar LocalDB på en Windows 11 enhet. Installationen misslyckas och i SQL Server felloggen ser du poster som liknar:
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 poster som liknar:
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 föregående 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.
På system som kör Windows 11 exponerar vissa nya lagringsenheter och enhetsdrivrutiner en disksektorstorlek som är större än den sektorstorlek på 4 KB som stöds.
När detta inträffar kan SQL Server inte starta på grund av filsystemet som inte stöds eftersom SQL Server för närvarande stöder 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 skiljer sig åt behåller du den största för att fastställa disksektorns storlek. Värdet 4096 anger en sektorlagringsstorlek på 4 kB.
Dessutom bör du vara medveten om Windows-supportprincipen för stöd för filsystem och lagringssektorstorlek. Mer information finns i microsofts supportprincip för 4 KB-sektorhårddiskar i Windows .
Obs!
Det finns ingen utgiven version av SQL Server kompatibel med sektorstorlekar som är större än 4 kB. Mer information finns i artikeln om stödgränser för stödgränser för hårddiskenheter i SQL Server.
Åtgärder
Microsoft undersöker för närvarande det här problemet.
Överväg någon av följande lösningar:
Om 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 visar en sektorstorlek som stöds när du kör frågor mot
fsutil
kommandona. SQL Server stöder för närvarande sektorlagringsstorlekar på 512 byte och 4 096 byte.Du kan lägga till en registernyckel, vilket gör att beteendet för Windows 11 och senare liknar Windows 10. Detta kommer att tvinga 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 avsnittet PowerShell som administratör . Du måste starta om enheten när du har lagt till registernyckeln för att ändringen ska börja gälla.Viktigt
Det här avsnittet innehåller steg som beskriver hur du ändrar Windows-registret. Det kan uppstå allvarliga problem om du gör detta felaktigt. Följ därför instruktionerna noga, och säkerhetskopiera registret innan du gör några ändringar i 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 .
- Gå till
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device
. - På redigera-menyn pekar du på Ny och väljer sedan Flersträngsvärde. Ge den namnet
ForcedPhysicalSectorSizeInBytes
. - Ändra det nya värdet, skriv in
* 4095
. Välj OK och stäng Registereditorn.
Kommandotolk som administratör
Lägg till nyckeln.
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
Kontrollera om nyckeln har lagts till.
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
Lägg till nyckeln.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"
Kontrollera om nyckeln har lagts till.
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes"
- Gå till
Du kan börja SQL Server genom att ange spårningsflaggan 1800. Mer information finns i DBCC TRACEON. Den här spårningsflaggan är inte aktiverad som standard. Spårningsflagga 1800 tvingar SQL Server att använda 4 KB som sektorstorlek för alla läs- och skrivåtgärder. När du kör SQL Server på diskar med en fysisk sektorstorlek som är större än 4 kB simulerar spårningsflaggan 1800 en intern enhet på 4 KB, vilket är den sektorstorlek som stöds för SQL Server.
Installera SQL Server på tillgängliga Windows 10 enheter i stället.
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.
De 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 4 KB-sektorstorleken som krävs av Windows.
Följande tabell innehåller en jämförelse av de sektorstorlekar som rapporteras 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 PhysicalBytesPerSectorForPerformance
visar 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 |
Se även
Feedback
Skicka och visa feedback för