SQL Server nella macchina virtuale Azure non riesce a eseguire la distribuzione o la connessione online

Si applica a: SQL Server in macchine virtuali di Azure

Sommario

La distribuzione di SQL Server in una macchina virtuale (VM) di Azure da un'immagine di Azure Marketplace può non riuscire con l'errore "L'unità di sistema ha restituito lo stato 'non pronto per l'uso'". Anche un'istanza di SQL Server installata manualmente può non tornare online dopo il riavvio della VM o la sua deallocazione. Questi errori si verificano quando SQL Server non è in grado di inizializzare il tempdb database in una risorsa di archiviazione temporanea locale non disponibile. Questo articolo consente di risolvere o aggirare questi errori.

Annotazioni

L'indagine di questo problema è in corso attivamente. Le informazioni contenute in questo articolo sono soggette a modifiche man mano che diventano disponibili nuovi dettagli.

Sintomi

Se si verifica questo problema, è probabile che venga visualizzato quanto segue:

  • Le distribuzioni di SQL Server in macchine virtuali di Azure hanno esito negativo quando si usa un'immagine di Azure Marketplace.
  • SQL Server non riesce a essere online dopo il riavvio di una macchina virtuale di Azure per le istanze installate manualmente di SQL Server.

La distribuzione di SQL Server in una macchina virtuale di Azure ha esito negativo

Quando si tenta di distribuire un'immagine di SQL Server in una macchina virtuale di Azure da Azure Marketplace, la distribuzione ha esito negativo con lo stato Conflict e l'errore seguente:

Lo stato dell'unità di sistema è stato restituito come non pronto per l'uso.

Ad esempio, se si distribuisce un'immagine dal portale di Azure, è possibile che venga visualizzato l'errore seguente per la distribuzione nel log attività:

{
    "status": "Failed",
    "error": {
        "code": "Ext_StorageConfigurationSettings_ApplyNewTempDbSettingsError",
        "message": "Error: 'System Drive returned status not ready for use '"
    }
}

Schermata dell'errore di distribuzione nel portale di Azure con il messaggio di errore: L'unità di sistema ha restituito lo stato Non pronto per l'uso.

Avvertimento

Quando si verifica questo errore, la distribuzione della macchina virtuale di Azure ha esito positivo, ma l'installazione di SQL Server non riesce. È necessario eliminare la macchina virtuale per evitare addebiti. Ridistribuire la macchina virtuale usando uno dei metodi descritti nelle sezioni Risoluzione o Soluzioni alternative .

SQL Server non riesce a essere online dopo il riavvio della macchina virtuale

È possibile che questo problema venga visualizzato dopo aver seguito questa sequenza di eventi:

  1. Si distribuisce una macchina virtuale di Azure dall'elenco di macchine virtuali interessate .
  2. Installare manualmente un'istanza di SQL Server nella macchina virtuale di Azure.
  3. È possibile configurare il database di SQL Server tempdb in modo da usare l'archiviazione temporanea ssd locale (in genere l'unità D: ).
  4. La macchina virtuale viene riavviata o deallocata.
  5. L'istanza di SQL Server non riesce a essere online.

Se si verifica questo problema, è possibile che venga visualizzato l'errore seguente nel log degli errori di SQL Server:

CREATE FILE encountered operating system error 3(The system cannot find the path specified.) 
while attempting to open or create the physical file 'D:\SQLTemp\tempdb.mdf'.
Error: 17204, Severity: 16, State: 1. FCB::Open failed: Could not open 
file D:\SQLTemp\tempdb.mdf for file number 1. OS error: 
3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "D:\SQLTemp\tempdb.mdf". Operating system error 3:
"3(The system cannot find the path specified.)".
Error: 1802, Severity: 16, State: 4 CREATE DATABASE failed. 
Some file names listed could not be created. Check related errors.
Could not create tempdb. You may not have enough disk space available.
Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. 
Check for additional errors in the event log that may indicate why the 
tempdb files could not be initialized.

Causa

Alcune delle dimensioni più recenti delle macchine virtuali di Azure presentano un volume SSD locale RAW per l'archiviazione temporanea configurata con l'interfaccia NVMe (Non-Volatile Memory Express). Questa configurazione genera errori perché SQL Server tenta di posizionare il tempdb database nell'archiviazione temporanea e non riesce perché il volume SSD locale non è disponibile. Inoltre, l'archiviazione temporanea viene visualizzata in formato RAW dopo che la macchina è stata deallocata.

Il volume SSD locale RAW causa l'esito negativo della distribuzione della macchina virtuale SQL e impedisce che le istanze di SQL Server installate manualmente vengano online dopo il riavvio della macchina virtuale. In entrambi i casi, SQL Server tenta di inizializzare il tempdb database nell'archivio temporaneo, che non è disponibile. La distribuzione non riesce perché SQL Server viene installato durante la distribuzione della macchina virtuale di Azure e l'archiviazione temporanea non è disponibile. Analogamente, le istanze installate manualmente di SQL Server non riescono a essere online dopo il riavvio della macchina virtuale perché l'archiviazione temporanea non è disponibile quando SQL Server tenta di creare il tempdb database.

Risoluzione

Questo problema si verifica a causa delle dimensioni selezionate della macchina virtuale di Azure. Per risolvere il problema, usare uno dei metodi seguenti:

  • Distribuire la macchina virtuale SQL Server tramite il portale di Azure in Windows Server 2022 o versione successiva.
    • Le soluzioni con script, ad esempio i modelli ARM o BICEP, non risolvono attualmente questo problema.
    • Windows Server 2019 e le immagini precedenti continuano a riscontrare questo problema.
  • Se possibile, usare un altro SKU di macchina virtuale, ad esempio gli SKU elencati nelle procedure consigliate per le dimensioni della macchina virtuale.
  • Se si vuole usare una macchina virtuale specifica nell'elenco delle macchine virtuali interessate , usare un computer senza il minuscolo d nel nome, che si trova tempdb nella stessa risorsa di archiviazione dei file di dati di SQL Server. Ad esempio, usare le dimensioni della FXmsv2 macchina virtuale anziché FXmdsv2. Quest'ultimo utilizza un'archiviazione temporanea non inizializzata, come indicato da d nel nome.

Soluzione

Se non è possibile usare un altro SKU di macchina virtuale senza un'unità SSD locale RAW, prendere in considerazione le soluzioni alternative seguenti:

  • Distribuire la macchina virtuale usando un'immagine solo Windows Server, usare uno script per formattare e inizializzare l'unità NVMe temporanea e quindi installare manualmente SQL Server.

    • Se si sceglie di inserire tempdb l'unità SSD locale, è necessario reinizializzare il disco prima di iniziare SQL Server ogni volta che la macchina virtuale viene riavviata o deallocata.
  • Distribuire l'immagine della macchina virtuale di SQL Server, ma configurare tempdb affinché utilizzi un'unità diversa dall'archiviazione temporanea durante la distribuzione. Ad esempio, è possibile configurare tempdb per usare l'unità C: oppure l'unità di archiviazione remota.

    1. È possibile configurare questa impostazione nella pagina delle impostazioni di SQL Server nel portale di Azure durante la distribuzione dell'immagine della macchina virtuale di SQL Server.

    2. In Configurazione archiviazione selezionare Modifica configurazione per aprire il riquadro Configura archiviazione .

    3. Espandere l'archiviazione tempdb e scegliere qualsiasi opzione diversa daUse local SSD drive:

      Screenshot del riquadro Configura archiviazione con l'opzione Usa un'unità separata per tempdb selezionata.

Macchine virtuali interessate

Questo problema si verifica con le macchine virtuali che distribuiscono un'unità temporanea non inizializzata, ad esempio le dimensioni della macchina virtuale seguenti:

Intel Gen 10.2 AMD Gen 9.1
Serie Ddsv6 Serie Dadsv6
Serie Dndsv6 Serie Dadsv7
Serie Ebdsv6 Serie DCadsv6
Serie Edsv6 Serie Eadsv6
Serie Endsv6 Serie Eadsv7
Serie FXmdsv2 Serie ECadsv6
Serie Fadsv7
Serie Famdsv7

Annotazioni

Prima di installare SQL Server, assicurarsi che la macchina virtuale non sia configurata con dimensioni del settore superiori a 4 KB.