Sql Server-installatie mislukt met een sectorgroottefout op een virtuele Windows Server Azure-machine

Van toepassing op: SQL Server, SQL Server op Azure VM - Windows

Overzicht

Dit artikel helpt u bij het oplossen van een probleem dat optreedt wanneer u handmatig een SQL Server exemplaar installeert op een Microsoft Azure virtuele machine (VM) waarop Windows wordt uitgevoerd. Wanneer u SQL Server installeert op een Azure-VM die gebruikmaakt van een NVMe-schijf met een systeemeigen sectorgrootte die groter is dan 4 kB, mislukt de installatie omdat SQL Server gegevensbestanden zoals master.mdf niet kunnen worden gehost op een volume met een sectorgrootte van 8 kB. In dit artikel wordt uitgelegd waarom de sectorgrootte niet overeenkomt op nieuwere Azure VM-serie en hoe u een sectorgrootte van 4 kB kunt afdwingen, zodat SQL Server installatie op de schijf slaagt.

Symptomen

Wanneer u een SQL Server-exemplaar installeert op een Azure VM waarop Windows wordt uitgevoerd, mislukt de installatie en wordt in het SQL Server foutenlogboek het volgende bericht weergegeven wanneer de engine probeert te starten:

Kan het bestand ...\master.mdf niet gebruiken omdat het oorspronkelijk is opgemaakt met sectorgrootte 4096 en zich nu op een volume bevindt met sectorgrootte 8192. Verplaats het bestand naar een volume met een sectorgrootte die gelijk is aan of kleiner is dan de oorspronkelijke sectorgrootte.

Het Summary.txt logboekbestand in de SQL Server installatiemap bevat ook vermeldingen als de volgende:

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.

Dit probleem kan optreden bij on-premises installaties, maar u zult het waarschijnlijker zien wanneer u SQL Server op een Azure VM installeert.

Oorzaak

Dit probleem treedt op vanwege de sectorgrootte van de schijf op sommige Azure VM-grootten. Nieuwere Azure VM-serie, zoals Dadsv6, Eadsv6 en Fasv6, gebruiken een NVMe-opslaginterface en vereisen een installatiekopieën van het besturingssysteem die ONDERSTEUNING bieden voor NVMe. Deze VM-serie maakt schijven beschikbaar met een standaardeigen sectorgrootte van 8 kB, die SQL Server geen ondersteuning biedt voor databasebestanden. SQL Server ondersteunt schijven met systeemeigen sectorgrootten van 512 bytes en 4 kB. Als een Azure-VM wordt geïmplementeerd met een sectorgrootte van 8 kB en u vervolgens SQL Server installeert, kan de installatie mislukken. Zie Opslagtypen voor SQL Server voor meer informatie.

Opmerking

Dit scenario is alleen van toepassing wanneer u SQL Server handmatig installeert op een Azure VM. Deze is niet van toepassing wanneer u een SQL Server VM-installatiekopieën implementeert vanuit Azure Marketplace, omdat deze installatiekopieën vooraf zijn geconfigureerd voor het gebruik van een sectorgrootte van 4 kB.

Beïnvloede schijf- en VM-typen

In deze scenario's komt de sectorgrootte meestal niet overeen:

  • Lokale NVMe-schijven op v6-VM-serie (bijvoorbeeld Dadsv6, Eadsv6, Easv6 en Fasv6), die een systeemeigen sectorgrootte van 8 kB beschikbaar maken.
  • Premium SSD v2 en Ultra Disk wanneer u de schijf maakt met een logische sectorgrootte van 4096 bytes, maar deze presenteert via een host die een fysieke sectorgrootte van 8 kB rapporteert.

Standaard-HDD-, Standard-SSD- en Premium SSD-gegevensschijven (v1) die u aan een eerdere VM-serie koppelt, hebben doorgaans een sectorgrootte van 4 kB en worden niet beïnvloed.

Solution

U kunt dit probleem oplossen door de Azure VM te dwingen een sectorgrootte van 4 kB te gebruiken en vervolgens SQL Server opnieuw te installeren.

  1. Als SQL Server al is geïnstalleerd, verwijdert u deze. Ga anders door naar de volgende stap.

  2. Voeg de registersleutel ForcedPhysicalSectorSizeInBytes toe.

  3. Controleer of de sectorgrootte 4 kB is door de volgende opdracht uit te voeren op een opdrachtprompt met verhoogde bevoegdheid:

    fsutil fsinfo sectorinfo <volume pathname>
    
  4. Start de Azure-VM opnieuw op.

  5. Installeer SQL Server opnieuw.

In de volgende schermopname ziet u de uitvoer van de fsutil fsinfo sectorinfo opdracht voor het E: station, met een sectorgrootte van 8 kB:

Schermopname van de uitvoer van de opdrachtprompt van 8 kB-sectorgrootte.

In de volgende schermopname ziet u de uitvoer van dezelfde opdracht voor het E: station nadat de registersleutel is toegevoegd om een sectorgrootte van 4 kB te gebruiken:

Schermopname van de uitvoer van de opdrachtprompt van 4 kB-sectorgrootte.

De ForcedPhysicalSectorSizeInBytes registersleutel is een instelling op besturingssysteemniveau. Alle stations die momenteel zijn gekoppeld en alle stations die later zijn gekoppeld, gebruiken een sectorgrootte van 4 kB totdat u deze registersleutel verwijdert.