Résoudre les erreurs liées à une taille de secteur de disque système supérieure à 4 Ko

Cet article fournit des solutions pour résoudre les erreurs lors de l’installation ou du démarrage d’une instance de SQL Server sur Windows 11 et Windows Server 2022. Cet article est valide pour toutes les versions publiées de SQL Server.

Les erreurs décrites dans cet article sont liées à une taille de secteur de disque système supérieure à 4 Ko.

S’applique à : SQL Server toutes les versions

Symptômes

Scénario n°1 : Vous installez n’importe quelle version de SQL Server sur un appareil Windows 11. Ensuite, vous voyez des erreurs similaires au message suivant pour le composant Database Engine Services de 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. 

Scénario n°2 : Vous installez n’importe quelle version de SQL Server sur un appareil Windows 10. Ensuite, vous mettez à niveau le système d’exploitation sur l’appareil vers Windows 11. Lorsque vous essayez de démarrer SQL Server sur un appareil Windows 11, le service ne parvient pas à démarrer et, dans le journal des erreurs SQL Server, vous remarquez des entrées similaires à celles-ci :

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. 

Scénario n°3 : Vous installez n’importe quelle version de SQL Server sur un appareil Windows 10. Ensuite, vous mettez à niveau le système d’exploitation sur l’appareil vers Windows 11. Lorsque vous essayez de démarrer SQL Server sur un appareil Windows 11, le service ne parvient pas à démarrer. Dans le journal des erreurs SQL Server, vous remarquez des entrées similaires à celles-ci :

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 

Scénario n° 4 : Vous installez LocalDB sur un appareil Windows 11. L’installation échoue et, dans le journal des erreurs SQL Server, vous remarquez des entrées similaires à celles-ci :

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.

Dans le journal des événements d’application Windows 11, vous remarquez des entrées similaires à celles-ci :

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

Remarque

Vous pouvez rencontrer les échecs mentionnés dans les scénarios précédents pour un SQL Server instance que vous avez installé manuellement ou sur un instance LocalDB installé par les applications.

Scénario n°5 : Si vous essayez d’utiliser une taille de secteur supérieure à 4 Ko, le message d’erreur suivant s’affiche :

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.

Cause

Au démarrage du service, SQL Server commence le processus de récupération de base de données pour garantir la cohérence de la base de données. Une partie de ce processus de récupération de base de données implique des vérifications de cohérence sur le système de fichiers sous-jacent avant d’essayer d’ouvrir les fichiers de base de données système et utilisateur.

Sur les systèmes exécutant Windows 11, certains nouveaux périphériques de stockage et pilotes de périphérique exposent une taille de secteur de disque supérieure à la taille de secteur de 4 Ko prise en charge.

Dans ce cas, SQL Server ne pourra pas démarrer en raison du système de fichiers non pris en charge, car SQL Server prend actuellement en charge des tailles de stockage de secteur de 512 octets et 4 Ko.

Vous pouvez confirmer que vous rencontrez ce problème spécifique en exécutant la commande :

fsutil fsinfo sectorinfo <volume pathname>

Par exemple, pour analyser le volume E :, exécutez la commande suivante :

fsutil fsinfo sectorinfo E:

Recherchez les valeurs PhysicalBytesPerSectorForAtomicity et PhysicalBytesPerSectorForPerformance, retournées en octets, et si elles sont différentes, conservez la plus grande pour déterminer la taille du secteur du disque. La valeur 4096 indique une taille de stockage de secteur de 4 Ko.

En outre, tenez compte de la stratégie de prise en charge de Windows pour la prise en charge du système de fichiers et de la taille du secteur de stockage. Pour plus d’informations, consultez l’article Stratégie de support Microsoft pour les disques durs de secteur de 4 Ko dans Windows .

Remarque

Il n’existe aucune version publiée de SQL Server compatible avec des tailles de secteur supérieures à 4 Ko. Pour plus d’informations, consultez l’article Limites de prise en charge de la taille du secteur du disque dur dans SQL Server article.

Résolutions

Microsoft étudie actuellement ce problème.

Envisagez l’une des solutions suivantes :

  • Si vous avez plusieurs lecteurs sur ce système, vous pouvez spécifier un autre emplacement pour les fichiers de base de données une fois l’installation de SQL Server terminée. Assurez-vous que le lecteur reflète une taille de secteur prise en charge lors de l’interrogation fsutil des commandes. SQL Server prend actuellement en charge les tailles de stockage de secteur de 512 octets et de 4 096 octets.

  • Vous pouvez ajouter une clé de Registre, ce qui entraînera le comportement de Windows 11 et des versions ultérieures similaires à Windows 10. Cela force l’émulation de la taille du secteur à 4 Ko. Pour ajouter la clé de ForcedPhysicalSectorSizeInBytes Registre, utilisez le registre Rédacteur ou exécutez les commandes comme décrit dans la section PowerShell en tant qu’administrateur. Vous devez redémarrer l’appareil après avoir ajouté la clé de Registre pour que cette modification prenne effet.

    Importante

    Cette section contient des étapes qui vous indiquent comment modifier le Registre Windows. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la sauvegarde et la restauration du Registre, consultez l’article Comment sauvegarder et restaurer le Registre dans Windows .

    Rédacteur du Registre

    1. Accédez à la page Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. Dans le menu Modifier , pointez sur Nouveau, puis sélectionnez Valeur multi-chaîne. Nommez-le ForcedPhysicalSectorSizeInBytes.
    3. Modifiez la nouvelle valeur, tapez dans * 4095. Sélectionnez OK et fermez l’Éditeur du Registre.

    Invite de commandes en tant qu’administrateur

    1. Ajoutez la clé.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Vérifiez si la clé a été ajoutée avec succès.

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

    PowerShell en tant qu’administrateur

    1. Ajoutez la clé.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Vérifiez si la clé a été ajoutée avec succès.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • Vous pouvez commencer SQL Server en spécifiant l’indicateur de trace 1800. Pour plus d’informations, consultez DBCC TRACEON. Cet indicateur de trace n’est pas activé par défaut. L’indicateur de trace 1800 force SQL Server à utiliser 4 Ko comme taille de secteur pour toutes les opérations de lecture et d’écriture. Lorsque vous exécutez SQL Server sur des disques dont la taille de secteur physique est supérieure à 4 Ko, l’utilisation de l’indicateur de trace 1800 simule un lecteur natif de 4 Ko, qui est la taille de secteur prise en charge pour SQL Server.

  • Installez SQL Server sur les appareils Windows 10 disponibles à la place.

Plus d’informations

Windows 11 pilotes NVMe natifs ont été mis à jour pour inclure la taille réelle du secteur indiquée directement par les périphériques de stockage NVMe. Cette opération a été effectuée au lieu de s’appuyer sur les informations émulées à partir des pilotes du système de fichiers.

Les pilotes Windows 10 ne signalent pas la taille du secteur source du stockage physique.

Les pilotes Windows 11 améliorés ignorent l’émulation utilisée par les périphériques de stockage NVMe courants. Par exemple, fsutil affiche une taille de secteur de 8 Ko ou 16 Ko, au lieu d’émuler la taille de secteur de 4 Ko requise par Windows.

Le tableau suivant fournit une comparaison des tailles de secteur signalées par les systèmes d’exploitation. Cet exemple illustre les différences entre Windows 10 et Windows 11 utilisant le même périphérique de stockage. Pour les valeurs de PhysicalBytesPerSectorForAtomicity et PhysicalBytesPerSectorForPerformance, Windows 10 affiche 4 Ko et Windows 11 16 Ko.

Exemple de sortie de 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

Voir aussi