L’installation de SQL Server échoue avec une erreur de taille de secteur sur une machine virtuelle Windows Server Azure

S’applique à : SQL Server, SQL Server sur une machine virtuelle Azure - Windows

Résumé

Cet article vous aide à résoudre un problème qui se produit lorsque vous installez manuellement une instance de SQL Server sur une machine virtuelle Microsoft Azure qui s’exécute Windows. Lorsque vous installez SQL Server sur une machine virtuelle Azure qui utilise un disque NVMe avec une taille de secteur native supérieure à 4 Ko, le programme d'installation échoue, car SQL Server fichiers de données comme master.mdf ne peuvent pas être hébergés sur un volume avec une taille de secteur de 8 Ko. Cet article explique pourquoi l’incompatibilité de taille du secteur se produit sur les séries de machines virtuelles Azure plus récentes et explique comment forcer une taille de secteur de 4 Ko afin que l’installation de SQL Server réussisse sur le disque.

Symptômes

Lorsque vous installez une instance de SQL Server sur une machine virtuelle Azure qui s’exécute Windows, l’installation échoue et le journal des erreurs SQL Server affiche le message suivant lorsque le moteur tente de démarrer :

Impossible d’utiliser le fichier '...\master.mdf', car il a été initialement mis en forme avec une taille de secteur 4096 et est maintenant sur un volume dont la taille de secteur est 8192. Déplacez le fichier vers un volume dont la taille des secteurs est inférieure ou égale à la taille des secteurs d'origine.

Le fichier journal Summary.txt dans le dossier d’installation SQL Server affiche également des entrées comme suit :

Detailed results:
  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:          0x851A0019
  Error description:             Could not find the Database Engine startup handle.

Ce problème peut se produire avec les installations locales, mais vous êtes plus susceptible de le voir lorsque vous installez SQL Server sur une machine virtuelle Azure.

Cause

Ce problème se produit en raison de la taille du secteur du disque sur certaines tailles de machine virtuelle Azure. Les nouvelles séries de machines virtuelles Azure comme Dadsv6, Eadsv6 et Fasv6 utilisent une interface de stockage NVMe uniquement et nécessitent une image de système d’exploitation qui prend en charge NVMe. Ces séries de machines virtuelles exposent des disques avec une taille de secteur native de 8 Ko par défaut, que SQL Server ne prend pas en charge pour les fichiers de base de données. SQL Server prend en charge les disques avec des tailles de secteur natives de 512 octets et 4 Ko. Si une machine virtuelle Azure est déployée avec une taille de secteur de 8 Ko et que vous installez ensuite SQL Server, l’installation peut échouer. Pour plus d’informations, consultez Les types de stockage pour SQL Server.

Remarque

Ce scénario s’applique uniquement lorsque vous installez manuellement SQL Server sur une machine virtuelle Azure. Elle ne s'applique pas lorsque vous déployez une image de machine virtuelle SQL Server à partir de Place de marché Azure, car ces images sont préconfigurées pour utiliser une taille de secteur de 4 Ko.

Types de disque et de machine virtuelle impactés

Vous voyez généralement l’incompatibilité de taille du secteur dans les scénarios suivants :

  • Disques NVMe locaux sur les séries de machines virtuelles v6 (par exemple, Dadsv6, Eadsv6, Easv6 et Fasv6), qui exposent une taille de secteur native de 8 Ko.
  • Disque SSD Premium v2 et Ultra lorsque vous créez le disque avec une taille de secteur logique de 4 096 octets, mais présentez-le via un hôte qui signale une taille de secteur physique de 8 Ko.

Les disques de données HDD standard, SSD Standard et Ssd Premium (v1) que vous attachez à des séries de machines virtuelles antérieures présentent généralement une taille de secteur de 4 Ko et ne sont pas affectés.

Solution

Pour résoudre ce problème, forcez la machine virtuelle Azure à utiliser une taille de secteur de 4 Ko, puis réinstallez SQL Server.

  1. Si SQL Server est déjà installé, désinstallez-le. Sinon, passez à l’étape suivante.

  2. Ajoutez la clé de registre ForcedPhysicalSectorSizeInBytes.

  3. Vérifiez que la taille du secteur est de 4 Ko en exécutant la commande suivante dans une invite de commandes élevée :

    fsutil fsinfo sectorinfo <volume pathname>
    
  4. Redémarrez la machine virtuelle Azure.

  5. Réinstallez SQL Server.

La capture d’écran suivante montre la sortie de la fsutil fsinfo sectorinfo commande pour le E: lecteur, qui a une taille de secteur de 8 Ko :

Capture d’écran de la sortie de l’invite de commandes indiquant une taille de secteur de 8 Ko.

La capture d’écran suivante montre la sortie de la même commande pour le E: lecteur une fois la clé de Registre ajoutée pour utiliser une taille de secteur de 4 Ko :

Capture d’écran de la sortie de l’invite de commandes indiquant une taille de secteur de 4 Ko.

La ForcedPhysicalSectorSizeInBytes clé de Registre est un paramètre au niveau du système d’exploitation. Tous les lecteurs actuellement attachés et tous les lecteurs attachés ultérieurement utilisent une taille de secteur de 4 Ko jusqu’à ce que vous supprimiez cette clé de Registre.