Risolvere gli errori dell'istanza del cluster di failover di SQL Server con gMSA

Si applica a: SQL Server su Windows

Sommario

Questo articolo consente di risolvere i problemi relativi all'installazione di un'istanza del cluster di failover (FCI) di SQL Server, all'aggiunta di un nodo, all'avvio e al failover quando il servizio SQL Server viene eseguito tramite un account del servizio gestito di gruppo (gMSA). Copre il recupero delle password gestite in ogni possibile nodo proprietario, diritti specifici del nodo e parametri di avvio, stato di installazione incompleto e errori delle risorse del cluster.

Prima di iniziare, consulta i prerequisiti ed esegui la checklist di convalida rapida in Risolvere i problemi di installazione, avvio e autenticazione di SQL Server con gli account del servizio gestito di gruppo (gMSA).

Symptoms

  • L'installazione di FCI non riesce durante la convalida dell'account.
  • Un'operazione di aggiunta di un nodo segnala informazioni incoerenti sull'account di servizio.
  • SQL Server inizia dalla riga di comando, ma non dal cluster.
  • Il failover ha esito negativo perché mancano parametri di avvio o configurazione specifici del nodo.

Cause

Gli errori FCI possono riguardare il recupero delle password, metadati di Setup incompleti, parametri di avvio specifici del nodo, diritti diversi a seconda del nodo, l'accesso all'archiviazione o i controlli di integrità del servizio Cluster. La causa specifica di gMSA è che uno o più possibili nodi proprietari non sono autorizzati a recuperare la password gestita, quindi l'istanza funziona su alcuni nodi e non funziona su altri.

Diagnosticare gli errori dell'istanza del cluster di failover

  1. Eseguire l'elenco di controllo di convalida rapida in ogni nodo proprietario possibile e confrontare i risultati.

    Eseguire i comandi seguenti in ogni nodo proprietario possibile.

    Test-ADServiceAccount -Identity 'SQLgMSA'
    sc.exe qmanagedaccount MSSQLSERVER
    Get-ClusterResource | Format-Table Name, ResourceType, State, OwnerGroup -AutoSize
    
  2. Confrontare l'identità del servizio, lo stato dell'account gestito, i diritti effettivi e i parametri di avvio tra i nodi.

    Risultato previsto:Test-ADServiceAccount restituisce True in ogni nodo proprietario possibile e i parametri di configurazione e avvio del servizio sono coerenti per la stessa istanza del cluster di failover.

  3. Controllare la cronologia della configurazione per le operazioni di aggiunta di nodi annullate o incomplete.

  4. Raccogliere il log degli errori SQL Server e il log del cluster per la stessa transizione di risorse.

    Generare un log del cluster eseguendo il comando seguente.

    Get-ClusterLog -UseLocalTime -Destination C:\Temp
    

Risolvere gli errori dell'istanza del cluster di failover

Usare la soluzione che corrisponde all'evidenza dei passaggi di diagnostica.

Autorizzare ogni possibile nodo proprietario a recuperare la password gestita

Autorizzare ogni nodo proprietario possibile a recuperare la password gestita e quindi eseguire il failover di nuovo in ogni nodo. Se l'account del servizio gestito di gruppo autorizza singoli account di computer, Set-ADServiceAccount sostituisce l'elenco completo delle entità di sicurezza autorizzate. Esaminare prima il valore esistente e includere tutte le entità che devono rimanere autorizzate.

# Review the gMSA configuration
Get-ADServiceAccount -Identity "SQLgMSA" `
    -Properties PrincipalsAllowedToRetrieveManagedPassword |
    Select-Object Name, PrincipalsAllowedToRetrieveManagedPassword

# If individual computer accounts are used, authorize each possible owner node
Set-ADServiceAccount -Identity "SQLgMSA" `
    -PrincipalsAllowedToRetrieveManagedPassword "NODE1$","NODE2$","NODE3$"

# Verify the gMSA from each possible owner node
Invoke-Command -ComputerName NODE1,NODE2,NODE3 {
    Test-ADServiceAccount -Identity "SQLgMSA"
}

Se un gruppo di sicurezza autorizza il gMSA, aggiungi i possibili nodi proprietari a quel gruppo anziché sostituire le entità di sicurezza gMSA esistenti.

Add-ADGroupMember -Identity "SQL-FCI-gMSA-Nodes" `
    -Members "NODE1$","NODE2$","NODE3$"

Per altre informazioni, vedere gli articoli seguenti:

Correggere i diritti specifici del nodo, i parametri di avvio o lo stato di installazione incompleto

Correggere i diritti specifici del nodo confermati, i parametri di avvio o lo stato incompleto del programma di installazione. Eseguire i comandi seguenti in ogni nodo e confrontare i risultati. Sostituire <InstanceID> con l'ID istanza, ad esempio MSSQL16.MSSQLSERVER.

# Verify the SQL Server service account on each node
Get-CimInstance Win32_Service -Filter "Name='MSSQLSERVER'" |
    Select-Object Name, StartName, State, StartMode

# Compare SQL Server startup parameters on each node
reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceID>\MSSQLServer\Parameters"

# Check the SQL Server Windows service configuration
sc.exe qc MSSQLSERVER

Usare Gestione configurazione SQL Server per correggere le differenze dei parametri di avvio anziché modificare manualmente il Registro di sistema. Per altre informazioni, vedere gli articoli seguenti:

Se l'errore della risorsa cluster non è correlato all'account del servizio, usare i comandi seguenti per esaminare i ruoli del cluster, le risorse del cluster e il log del cluster.

# List clustered roles and their current owner/state
Get-ClusterGroup

# List cluster resources and their current state
Get-ClusterResource |
    Format-Table Name, ResourceType, State, OwnerGroup -AutoSize

# Identify SQL Server-related cluster resources
Get-ClusterResource |
    Where-Object { $_.ResourceType -like "*SQL*" } |
    Format-Table Name, ResourceType, State, OwnerGroup -AutoSize

# Generate cluster logs
New-Item -ItemType Directory -Path "C:\ClusterLogs" -Force
Get-ClusterLog -UseLocalTime -Destination "C:\ClusterLogs"

Il FailoverClusters modulo di PowerShell fornisce i Get-ClusterGroupcmdlet , Get-ClusterResourcee Get-ClusterLog . Per altre informazioni su questi cmdlet, vedere gli articoli seguenti:

Per gli errori specifici di SQL Server, vedere gli articoli seguenti:

Ricrea le chiavi del Registro di sistema specifiche per le risorse mancanti

Per ricreare le chiavi del Registro di sistema specifiche delle risorse mancanti, seguire la procedura descritta in Ricreare manualmente chiavi del Registro di sistema specifiche delle risorse. Prima di apportare le modifiche del Registro di sistema documentate, identificare le risorse del cluster SQL Server ed eseguire il backup del Registro di sistema del cluster.

# Identify the SQL Server cluster resources
Get-ClusterResource |
    Where-Object { $_.ResourceType -like "*SQL*" } |
    Format-Table Name, ResourceType, State, OwnerGroup

# Back up the cluster registry before making documented registry changes
New-Item -ItemType Directory -Path "C:\Temp" -Force
reg export "HKLM\Cluster" "C:\Temp\ClusterRegistryBackup.reg" /y

Caution

Non copiare i valori del Registro di sistema tra istanze non correlate. Verificare l'ID istanza, i percorsi di archiviazione condivisa, il ruolo cluster e il nodo prima di apportare una modifica.

Raccogliere i dati di diagnostica

Se l'errore persiste dopo aver completato questi passaggi, raccogliere i dati di diagnostica da ogni possibile nodo proprietario, incluso il log del cluster per la stessa transizione di risorse. Per le informazioni specifiche di gMSA e i log standard di SQL Server da raccogliere, vedere Raccogliere dati di diagnostica nella panoramica della risoluzione dei problemi di gMSA. Usa questi dati per continuare l'analisi o per aprire una richiesta di supporto.