Risolvere gli errori relativi alle dimensioni del settore del disco di sistema superiori a 4 KB

Questo articolo fornisce soluzioni per la risoluzione degli errori durante l'installazione o l'avvio di un'istanza di SQL Server in Windows 11 e Windows Server 2022. Questo articolo è valido per tutte le versioni rilasciate di SQL Server.

Gli errori illustrati in questo articolo sono correlati a dimensioni del settore del disco di sistema superiori a 4 KB.

Si applica a: SQL Server tutte le versioni

Sintomi

Scenario n. 1: È possibile installare qualsiasi versione di SQL Server in un dispositivo Windows 11. Vengono quindi visualizzati errori simili al messaggio seguente per il componente Servizi motore di database di 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 n. 2: È possibile installare qualsiasi versione di SQL Server in un dispositivo Windows 10. Quindi, si aggiorna il sistema operativo nel dispositivo a Windows 11. Quando si tenta di avviare SQL Server in un dispositivo Windows 11, il servizio non viene avviato e nel log degli errori SQL Server si notano voci simili alle seguenti:

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 n. 3: È possibile installare qualsiasi versione di SQL Server in un dispositivo Windows 10. Quindi, si aggiorna il sistema operativo nel dispositivo a Windows 11. Quando si tenta di avviare SQL Server in un dispositivo Windows 11, il servizio non viene avviato. Nel log degli errori SQL Server si notano voci simili alle seguenti:

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 n. 4: Si installa LocalDB in un dispositivo Windows 11. L'installazione non riesce e nel log degli errori SQL Server si notano voci simili a:

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.

Nel registro eventi dell'applicazione Windows 11 si notano voci simili alle seguenti:

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

Nota

È possibile che si verifichino gli errori indicati negli scenari precedenti per un'istanza di SQL Server installata manualmente o in un'istanza di LocalDB installata dalle applicazioni.

Scenario n. 5: Se si tenta di usare dimensioni del settore superiori a 4 KB, viene visualizzato il messaggio di errore seguente:

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.

Causa

Durante l'avvio del servizio, SQL Server avvia il processo di ripristino del database per garantire la coerenza del database. Parte di questo processo di ripristino del database prevede controlli di coerenza nel file system sottostante prima di provare ad aprire i file di database di sistema e utente.

Nei sistemi che eseguono Windows 11, alcuni nuovi dispositivi di archiviazione e driver di dispositivo espongono dimensioni del settore del disco superiori alle dimensioni del settore supportate di 4 KB.

In questo caso, SQL Server non sarà possibile avviare a causa del file system non supportato perché SQL Server attualmente supporta dimensioni di archiviazione del settore di 512 byte e 4 KB.

È possibile verificare che si verifichi questo problema specifico eseguendo il comando :

fsutil fsinfo sectorinfo <volume pathname>

Ad esempio, per analizzare il volume E: eseguire il comando seguente:

fsutil fsinfo sectorinfo E:

Cercare i valori PhysicalBytesPerSectorForAtomicity e PhysicalBytesPerSectorForPerformance, restituiti in byte e, se sono diversi, mantenere il valore più grande per verificare le dimensioni del settore del disco. Il valore 4096 indica una dimensione di archiviazione del settore di 4 KB.

Tenere inoltre presente i criteri di supporto di Windows per il supporto delle dimensioni del file system e del settore di archiviazione. Per altre informazioni, vedere l'articolo Criteri di supporto Microsoft per i dischi rigidi del settore da 4 KB in Windows .

Nota

Non è disponibile alcuna versione rilasciata di SQL Server compatibile con dimensioni del settore superiori a 4 KB. Per altre informazioni, vedere l'articolo Limiti di supporto delle dimensioni del settore delle unità disco rigido in SQL Server articolo.

Risoluzioni

Microsoft sta attualmente esaminando questo problema.

Si consideri una delle soluzioni seguenti:

  • Se nel sistema sono presenti più unità, è possibile specificare un percorso diverso per i file di database al termine dell'installazione di SQL Server. Assicurarsi che l'unità rifletta le dimensioni del settore supportate durante l'esecuzione di query sui fsutil comandi. SQL Server supporta attualmente dimensioni di archiviazione del settore di 512 byte e 4096 byte.

  • È possibile aggiungere una chiave del Registro di sistema, in modo che il comportamento di Windows 11 e versioni successive sia simile a Windows 10. In questo modo le dimensioni del settore vengono emulate come 4 KB. Per aggiungere la chiave del ForcedPhysicalSectorSizeInBytes Registro di sistema, usare l'Editor del Registro di sistema o eseguire i comandi come descritto nella sezione PowerShell come amministratore. Per rendere effettiva questa modifica, è necessario riavviare il dispositivo dopo aver aggiunto la chiave del Registro di sistema.

    Importante

    Questa sezione contiene i passaggi che indicano come modificare il Registro di sistema di Windows. Poiché l'errata modifica del Registro di sistema può causare seri problemi, Di conseguenza, attenersi scrupolosamente alla procedura indicata. Per una maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. In questo modo sarà possibile ripristinare il Registro di sistema se si verifica un problema. Per altre informazioni su come eseguire il backup e il ripristino del Registro di sistema, vedere l'articolo Come eseguire il backup e il ripristino del Registro di sistema in Windows .

    Editor del Registro di sistema

    1. Vai a Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. Scegliere Nuovo dal menu Modifica e quindi selezionare Valore multistringa. Assegnarle il ForcedPhysicalSectorSizeInBytesnome .
    3. Modificare il nuovo valore, digitare .* 4095 Selezionare OK e chiudere l'editor del Registro di sistema.

    Prompt dei comandi come amministratore

    1. Aggiungere la chiave.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Verificare se la chiave è stata aggiunta correttamente.

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

    PowerShell come amministratore

    1. Aggiungere la chiave.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Verificare se la chiave è stata aggiunta correttamente.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • È possibile iniziare SQL Server specificando il flag di traccia 1800. Per altre informazioni, vedere DBCC TRACEON. Questo flag di traccia non è abilitato per impostazione predefinita. Il flag di traccia 1800 forza SQL Server a usare 4 KB come dimensione del settore per tutte le operazioni di lettura e scrittura. Quando si eseguono SQL Server su dischi con dimensioni del settore fisico superiori a 4 KB, l'uso del flag di traccia 1800 simula un'unità nativa da 4 KB, ovvero le dimensioni del settore supportate per SQL Server.

  • Installare invece SQL Server nei dispositivi Windows 10 disponibili.

Ulteriori informazioni

Windows 11 driver NVMe nativi sono stati aggiornati per includere le dimensioni effettive del settore segnalate direttamente dai dispositivi di archiviazione NVMe. Questa operazione è stata eseguita anziché basarsi sulle informazioni emulate dai driver del file system.

I driver Windows 10 non segnalano le dimensioni del settore di origine dell'archiviazione fisica.

I driver di Windows 11 migliorati ignorano l'emulazione usata dai comuni dispositivi di archiviazione NVMe. Ad esempio, fsutil visualizza una dimensione del settore di 8 KB o 16 KB, anziché emulare le dimensioni del settore necessarie da 4 KB richieste da Windows.

La tabella seguente fornisce un confronto tra le dimensioni del settore segnalate dai sistemi operativi. Questo esempio illustra le differenze tra Windows 10 e Windows 11 usando lo stesso dispositivo di archiviazione. Per i valori di PhysicalBytesPerSectorForAtomicity e PhysicalBytesPerSectorForPerformance, Windows 10 visualizza 4 KB e Windows 11 16 KB.

Output di esempio di 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

Vedere anche