SQL Server-installationen misslyckas med sektorstorleksfel på en virtuell Windows Server Azure-dator

Gäller för: SQL Server, SQL Server på en virtuell Azure-dator – Windows

Sammanfattning

Den här artikeln hjälper dig att åtgärda ett problem som uppstår när du installerar en SQL Server instans manuellt på en Microsoft Azure virtuell dator (VM) som kör Windows. När du installerar SQL Server på en Azure virtuell dator som använder en NVMe-disk med en intern sektorstorlek som är större än 4 kB, misslyckas konfigurationen eftersom SQL Server datafiler som master.mdf inte kan finnas på en volym med en sektorstorlek på 8 KB. Den här artikeln förklarar varför matchningsfelet för sektorns storlek uppstår i nyare Azure VM-serien och hur du tvingar fram en sektorstorlek på 4 KB så att SQL Server installationen lyckas på disken.

Symtom

När du installerar en SQL Server-instans på en Azure virtuell dator som körs Windows misslyckas installationen och SQL Server felloggen visar följande meddelande när motorn försöker starta:

Det går inte att använda filen ...\master.mdf eftersom den ursprungligen var formaterad med sektorstorlek 4096 och nu finns på en volym med sektorstorleken 8192. Flytta filen till en volym med en sektorstorlek som är samma som eller mindre än den ursprungliga sektorstorleken.

Loggfilen Summary.txt i SQL Server installationsmappen visar också poster som följande:

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.

Det här problemet kan inträffa med lokala installationer, men det är mer troligt att du ser det när du installerar SQL Server på en Azure virtuell dator.

Orsak

Det här problemet uppstår på grund av diskens sektorstorlek på vissa Azure VM-storlekar. Nyare Azure VM-serier som Dadsv6, Eadsv6 och Fasv6 använder ett NVMe-lagringsgränssnitt och kräver en OS-avbildning som stöder NVMe. Den här VM-serien exponerar diskar med en standardstorlek på 8 KB, vilket SQL Server inte stöder för databasfiler. SQL Server stöder diskar med inbyggda sektorstorlekar på 512 byte och 4 KB. Om en Azure virtuell dator distribueras med en sektorstorlek på 8 KB och du sedan installerar SQL Server kan installationen misslyckas. Mer information finns i Lagringstyper för SQL Server.

Obs!

Det här scenariot gäller endast när du installerar SQL Server manuellt på en Azure virtuell dator. Det gäller inte när du distribuerar en SQL Server VM-avbildning från Azure Marketplace, eftersom dessa avbildningar är förkonfigurerade för att använda en sektorstorlek på 4 KB.

Disk- och VM-typer som påverkas

Du ser oftast sektorstorlekens matchningsfel i följande scenarier:

  • Lokala NVMe-diskar på v6 VM-serien (till exempel Dadsv6, Eadsv6, Easv6 och Fasv6), som exponerar en intern sektorstorlek på 8 KB.
  • Premium SSD v2 och Ultra Disk när du skapar disken med en logisk sektorstorlek på 4 096 byte men presenterar den via en värd som rapporterar en fysisk sektorstorlek på 8 KB.

Standard HDD-, Standard SSD- och Premium SSD-datadiskar (v1) som du ansluter till tidigare VM-serier har vanligtvis en sektorstorlek på 4 KB och påverkas inte.

Lösning

Åtgärda problemet genom att tvinga den Azure virtuella datorn att använda en sektorstorlek på 4 KB och sedan installera om SQL Server.

  1. Om SQL Server redan är installerat avinstallerar du det. Annars fortsätter du till nästa steg.

  2. Lägg till registernyckeln ForcedPhysicalSectorSizeInBytes .

  3. Kontrollera att sektorstorleken är 4 kB genom att köra följande kommando i en upphöjd kommandotolk:

    fsutil fsinfo sectorinfo <volume pathname>
    
  4. Starta om den virtuella Azure-datorn.

  5. Installera om SQL Server.

Följande skärmbild visar utdata från kommandot fsutil fsinfo sectorinfo för enheten E:, som har en sektorstorlek på 8 kB:

Skärmbild av utdata från kommandotolken med en sektorstorlek på 8 KB.

Följande skärmbild visar utdata från samma kommando för E: enheten när registernyckeln har lagts till för att använda en sektorstorlek på 4 KB:

Skärmbild av utdata från kommandotolken med en sektorstorlek på 4 KB.

Registernyckeln ForcedPhysicalSectorSizeInBytes är en inställning på OS-nivå. Alla enheter som för närvarande är anslutna och alla enheter som är anslutna senare använder en sektorstorlek på 4 KB tills du tar bort registernyckeln.