Condividi tramite


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. Questo articolo è valido per tutte le versioni rilasciate di SQL Server.

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

Si applica a: SQL Server tutte le versioni

Sintomi

Scenario 1: installare qualsiasi versione di SQL Server. Vengono quindi visualizzati errori simili al messaggio seguente per il componente motore di database Services 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. 

In alternativa, vengono visualizzati errori nel log degli errori di SQL Server simile al seguente:

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 2: installare qualsiasi versione di SQL Server in un dispositivo Windows 10. Aggiornare quindi il sistema operativo nel dispositivo a Windows 11. Quando si tenta di avviare SQL Server in un dispositivo Windows 11, l'avvio del servizio non riesce e nel log degli errori di SQL Server si notano voci simili a:

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: installare qualsiasi versione di SQL Server in un dispositivo Windows 10. Aggiornare quindi il sistema operativo nel dispositivo a Windows 11. Quando si tenta di avviare SQL Server in un dispositivo Windows 11, l'avvio del servizio non riesce. Nel log degli errori di SQL Server si notano voci simili a:

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

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 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 sistema e di database utente.

Alcuni nuovi dispositivi di archiviazione e driver di dispositivo espongono dimensioni del settore del disco superiori alle dimensioni del settore di 4 KB supportate.

In questo caso, SQL Server non sarà in grado di avviarsi a causa del file system non supportato perché SQL Server supporta attualmente 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, conservare quello più grande per verificare le dimensioni del settore del disco. Il valore 4096 indica una dimensione di archiviazione del settore di 4 KB.

Inoltre, tenere 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 Tecnico Microsoft per dischi rigidi di settore da 4 KB in Windows .

Nota

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

Risoluzioni

  • Attualmente, la ForcedPhysicalSectorSizeInBytes chiave del Registro di sistema è necessaria per installare correttamente SQL Server quando si usano piattaforme di archiviazione moderne, ad esempio NVMe, che forniscono dimensioni del settore superiori a 4 KB. Questa chiave del Registro di sistema operativo Windows forza l'emulazione delle dimensioni del settore come 4 KB. Per aggiungere la chiave del ForcedPhysicalSectorSizeInBytes Registro di sistema, usare l'editor del Registro di sistema o eseguire comandi come descritto nella sezione Prompt dei comandi o PowerShell . È necessario riavviare il dispositivo dopo aver aggiunto la chiave del Registro di sistema per rendere effettiva questa modifica. Non è necessario aggiungere flag di traccia 1800 per questo scenario.

    Importante

    Questa sezione contiene i passaggi che illustrano come modificare il Registro di sistema di Windows. Poiché l'errata modifica del Registro di sistema può causare seri problemi, Pertanto, assicurarsi di osservare attentamente la procedura seguente. 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 .

    1. Eseguire l'editor del Registro di sistema come amministratore.
    2. Vai a Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    3. Selezionare Modifica>nuovo>valore multi-stringa e denominarlo come .ForcedPhysicalSectorSizeInBytes
    4. Fare clic con il pulsante destro del mouse sul nome, scegliere Modifica e digitare * 4095 nel campo Dati valore.
    5. Selezionare OK e chiudere l'editor del Registro di sistema.
  • Se non si aggiunge la chiave del Registro di sistema e si dispone di più unità in questo sistema, è possibile specificare un percorso diverso per i file di database al termine dell'installazione di SQL Server. Assicurarsi che l'unità rifletta una dimensione del settore supportata durante l'esecuzione di query sui fsutil comandi. SQL Server supporta attualmente dimensioni di archiviazione del settore di 512 byte e 4.096 byte.

Ulteriori informazioni

I driver NVMe nativi di Windows 11 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 di Windows 10 non segnalano le dimensioni del settore di origine dell'archiviazione fisica.

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

La tabella seguente fornisce un confronto delle 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 visualizza 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