L'installazione di SQL Server ha esito negativo e viene visualizzato un errore di dimensione del settore in una macchina virtuale di Windows Server Azure

Si applica a: SQL Server, SQL Server in una macchina virtuale di Azure - Windows

Sommario

Questo articolo illustra come risolvere un problema che si verifica quando si installa manualmente un'istanza di SQL Server in una macchina virtuale (VM) Microsoft Azure che esegue Windows. Quando si installa SQL Server in una macchina virtuale Azure che usa un disco NVMe con dimensioni del settore native superiori a 4 KB, l'installazione ha esito negativo perché SQL Server file di dati come master.mdf non possono essere ospitati in un volume con dimensioni di settore di 8 KB. Questo articolo spiega perché si verifica un'incongruenza nelle dimensioni del settore nelle nuove serie di macchine virtuali di Azure e come forzare una dimensione del settore di 4 KB in modo che l'installazione di SQL Server sul disco vada a buon fine.

Sintomi

Quando si installa un'istanza di SQL Server in una macchina virtuale Azure che esegue Windows, l'installazione non riesce e il log degli errori SQL Server mostra il messaggio seguente quando il motore tenta di avviare:

Impossibile utilizzare il file '...\master.mdf' perché è stato originariamente formattato con dimensioni del settore 4096 ed è ora in un volume con dimensioni del settore 8192. Spostare il file in un volume con dimensioni di settore uguali o inferiori a quelle originali.

Il file di log Summary.txt nella cartella di installazione di SQL Server mostra anche voci simili alle seguenti:

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.

Questo problema può verificarsi con le installazioni locali, ma è più probabile che venga visualizzato quando si installa SQL Server in una macchina virtuale Azure.

Causa

Questo problema si verifica a causa della dimensione del settore del disco in alcune dimensioni delle macchine virtuali di Azure. Le serie più recenti di macchine virtuali di Azure, come Dadsv6, Eadsv6 e Fasv6, utilizzano un'interfaccia di archiviazione esclusivamente NVMe e richiedono un'immagine del sistema operativo che supporti NVMe. Queste serie di VM espongono dischi con una dimensione nativa predefinita del settore pari a 8 KB, che SQL Server non supporta per i file di database. SQL Server supporta dischi con dimensioni del settore nativo di 512 byte e 4 KB. Se una macchina virtuale Azure viene distribuita con dimensioni di settore di 8 KB e quindi si installa SQL Server, l'installazione può non riuscire. Per ulteriori informazioni, vedere Tipi di archiviazione per SQL Server.

Nota

Questo scenario si applica solo quando si installano manualmente SQL Server in una macchina virtuale Azure. Non si applica quando si distribuisce un'immagine di macchina virtuale SQL Server da Azure Marketplace, perché tali immagini sono preconfigurate per l'uso di dimensioni di settore di 4 KB.

Tipi di disco e macchina virtuale interessati

La mancata corrispondenza delle dimensioni del settore si verifica in genere in questi scenari:

  • Dischi NVMe locali nella serie di macchine virtuali v6 (ad esempio, Dadsv6, Eadsv6, Easv6 e Fasv6), che espongono dimensioni del settore nativo di 8 KB.
  • Ssd Premium v2 e Ultra Disk quando si crea il disco con dimensioni del settore logico di 4096 byte, ma lo presentano tramite un host che segnala dimensioni del settore fisico di 8 KB.

I dischi dati HDD Standard, SSD Standard e SSD Premium (v1) collegati alle serie di macchine virtuali precedenti presentano in genere dimensioni di settore di 4 KB e non sono interessati.

Soluzione

Per risolvere questo problema, forzare la macchina virtuale di Azure a usare una dimensione del settore di 4 KB e quindi reinstallare SQL Server.

  1. Se SQL Server è già installato, disinstallarlo. In caso contrario, vai al passaggio successivo.

  2. Aggiungere la chiave del Registro di sistema ForcedPhysicalSectorSizeInBytes.

  3. Verificare che le dimensioni del settore siano pari a 4 KB eseguendo il comando seguente al prompt dei comandi con privilegi elevati:

    fsutil fsinfo sectorinfo <volume pathname>
    
  4. Riavviare la macchina virtuale di Azure.

  5. Reinstallare SQL Server.

La schermata seguente mostra l'output del comando fsutil fsinfo sectorinfo per l'unità E:, che ha una dimensione del settore di 8 KB:

Schermata dell'output del prompt dei comandi con dimensione del settore di 8 KB.

La schermata seguente mostra l'output dello stesso comando per l'unità E: dopo aver aggiunto la chiave del Registro di sistema per usare una dimensione del settore pari a 4 KB:

Schermata dell'output del prompt dei comandi con dimensione del settore pari a 4 KB.

La ForcedPhysicalSectorSizeInBytes chiave del Registro di sistema è un'impostazione a livello di sistema operativo. Tutte le unità attualmente collegate e tutte le unità collegate in un secondo momento, usano una dimensione di settore di 4 KB fino a quando non si rimuove questa chiave del Registro di sistema.