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

Den här artikeln hjälper dig att lösa ett problem som uppstår när du försöker installera en SQL Server-instans manuellt på en virtuell Microsoft Azure-dator (VM) som kör Windows.

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

Symptom

När du försöker installera en SQL Server-instans på en virtuell Azure-dator (VM) som kör Windows misslyckas installationen och du får följande felmeddelande i SQL Server-felloggen när motorn försöker starta under installationen:

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.

Dessutom kan du se följande information i Summary.txt loggfilen i sql Server-installationsmappen:

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 uppstå med lokala installationer, men det är mer troligt att du stöter på det när du installerar SQL Server på en virtuell Microsoft Azure-dator (VM).

Orsak

Det här problemet uppstår på grund av diskens sektorstorlekskonfiguration på vissa virtuella Azure-datorer. Några av de senaste generationerna av virtuella Azure-datorer (till exempel Da, Ea och Fav6) har ett NVMe-lagringsgränssnitt och kräver en OS-avbildning som stöder NVMe. De senaste generationerna av virtuella Azure-datorer distribueras dock med en standardsektorstorlek på 8 kB, vilket för närvarande inte stöds av SQL Server. SQL Server stöder för närvarande diskar med standardstorlekar för interna sektorer på 512 byte och 4 KB.

Obs!

Non-Volatile Memory Express (NVMe) är ett kommunikationsprotokoll som underlättar snabbare och effektivare dataöverföring mellan servrar och lagringssystem med hjälp av icke-flyktigt minne (NVM). Med NVMe kan data överföras med det högsta dataflödet och med de snabbaste svarstiderna.

Om en virtuell Azure-dator distribueras med sektorstorleken 8 KB och du försöker installera SQL Server efter distributionen kan installationen misslyckas.

Obs!

Det här scenariot inträffar bara när du installerar SQL Server manuellt på en virtuell Azure-dator, men inte när du distribuerar en virtuell SQL Server-dator från Azure Marketplace. Azure Marketplace-avbildningarna är förkonfigurerade för att använda sektorstorleken 4 KB.

Åtgärd

Lös problemet genom att installera om SQL Server efter att ha tvingat den virtuella Azure-datorn att använda sektorstorleken 4 KB.

Följ dessa steg för att installera SQL Server på den virtuella Azure-datorn:

  1. Om du redan har installerat SQL Server avinstallerar du SQL Server. 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 fsutil fsinfo sectorinfo kommandot för E: enheten, 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 kommandot för fsutil fsinfo sectorinfo enheten efter uppdatering av E: registernyckeln för att använda sektorstorleken 4 KB:

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

Registernyckeln ForcedPhysicalSectorSizeInBytes är en inställning på OS-nivå, vilket innebär att alla enheter som för närvarande är anslutna och de som är anslutna i framtiden använder sektorstorleken 4 KB om inte registernyckeln tas bort.