Partager via


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

Cet article fournit des solutions pour résoudre les erreurs lors de l’installation ou démarrer 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 à la taille du secteur du 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. Vous voyez ensuite des erreurs similaires au message suivant pour le composant Moteur de base de données 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 à :

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 à :

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. Le programme d’installation échoue et dans le journal des erreurs SQL Server, vous remarquez des entrées similaires à :

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 à :

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

Note

Vous pouvez rencontrer les échecs mentionnés dans les scénarios précédents pour une instance SQL Server que vous avez installée manuellement ou sur une instance LocalDB installée 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 démarre 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 des 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ériques exposent une taille de secteur disque supérieure à la taille de secteur de 4 Ko prise en charge.

Lorsque cela se produit, SQL Server ne peut pas démarrer en raison du système de fichiers non pris en charge, car SQL Server prend actuellement en charge les tailles de stockage du 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 la stratégie de support Microsoft pour les disques durs du secteur 4 Ko dans l’article Windows .

Note

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

Résolutions

Microsoft étudie actuellement ce problème.

Considérez 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 du secteur de 512 octets et 4096 octets.

  • Vous pouvez ajouter une clé de Registre, ce qui entraîne le comportement de Windows 11 et versions ultérieures comme Windows 10. Cela force la taille du secteur à émuler sous la forme de 4 Ko. Pour ajouter la clé de ForcedPhysicalSectorSizeInBytes Registre, utilisez l’Éditeur de Registre ou exécutez des 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.

    Important

    Cette section contient des étapes qui vous indiquent comment modifier le Registre Windows. Toutefois, des problèmes graves peuvent survenir si vous modifiez le Registre de manière incorrecte. Par conséquent, vérifiez que vous suivez ces étapes attentivement. Pour une protection supplémentaire, sauvegardez le Registre avant de le modifier. Ensuite, vous pouvez restaurer le Registre si un problème se produit. Pour plus d’informations sur la sauvegarde et la restauration du Registre, consultez l’article Comment sauvegarder et restaurer le Registre dans Windows .

    Éditeur du Registre

    1. Naviguez vers 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 démarrer 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 avec une taille de secteur physique supérieure à 4 Ko, 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

Les pilotes NVMe natifs Windows 11 ont été mis à jour pour inclure la taille réelle du secteur signalée directement par les périphériques de stockage NVMe. Cette opération a été effectuée plutôt que 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 que les périphériques de stockage NVMe courants utilisent. Par exemple, fsutil affiche une taille de secteur de 8 Ko ou 16 Ko, plutôt que de simuler 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 à l’aide du même périphérique de stockage. Pour les valeurs et PhysicalBytesPerSectorForAtomicity PhysicalBytesPerSectorForPerformance, Windows 10 affiche 4 Ko et Windows 11 affiche 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