Storingen in SQL Server-failoverclusterexemplaren met gMSA's oplossen

Van toepassing op: SQL Server op Windows

Overzicht

Dit artikel helpt u bij het oplossen van problemen met SQL Server failoverclusterexemplaar (FCI) Setup, add-node, startup en failover wanneer de SQL Server service wordt uitgevoerd onder een door een groep beheerd serviceaccount (gMSA). Het behandelt het ophalen van beheerde wachtwoorden op elk mogelijk eigenaarsknooppunt, knooppuntspecifieke rechten en opstartparameters, onvolledige installatiestatus en clusterresourcefouten.

Voordat u begint, controleert u de vereisten en voert u de controlelijst voor snelle validatie uit in Probleemoplossing SQL Server installatie-, opstart- en verificatiefouten met gMSA's.

Symptomen

  • FCI Setup mislukt tijdens de accountvalidatie.
  • Een add-node-bewerking rapporteert inconsistente serviceaccount-informatie.
  • SQL Server begint vanaf de opdrachtregel, maar niet via het cluster.
  • Failover mislukt omdat knooppuntspecifieke opstartparameters of de configuratie ontbreken.

Oorzaak

FCI-fouten kunnen betrekking hebben op het ophalen van wachtwoorden, onvolledige installatiemetagegevens, knooppuntspecifieke opstartparameters, rechten die verschillen per knooppunt, opslagtoegang of statuscontroles van Cluster Service. De specifieke oorzaak van gMSA is dat een of meer mogelijke eigenaarsknooppunten niet zijn gemachtigd om het beheerde wachtwoord op te halen, dus het exemplaar werkt op sommige knooppunten en mislukt op andere knooppunten.

Problemen met failoverclusterinstanties vaststellen

  1. Voer de controlelijst voor snelle validatie uit op elk mogelijk eigenaarknooppunt en vergelijk de resultaten.

    Voer de volgende opdrachten uit op elk mogelijk eigenaarknooppunt.

    Test-ADServiceAccount -Identity 'SQLgMSA'
    sc.exe qmanagedaccount MSSQLSERVER
    Get-ClusterResource | Format-Table Name, ResourceType, State, OwnerGroup -AutoSize
    
  2. Vergelijk de service-identiteit, de status van het beheerde account, de effectieve rechten en opstartparameters tussen knooppunten.

    Verwacht resultaat:Test-ADServiceAccount retourneert True op elk mogelijk eigenaarknooppunt en serviceconfiguratie en opstartparameters zijn consistent voor dezelfde FCI.

  3. Controleer de installatiegeschiedenis voor geannuleerde of onvolledige bewerkingen voor het toevoegen van knooppunten.

  4. Verzamel het SQL Server foutenlogboek en het clusterlogboek voor dezelfde resourceovergang.

    Genereer een clusterlogboek door de volgende opdracht uit te voeren.

    Get-ClusterLog -UseLocalTime -Destination C:\Temp
    

Storingen in failoverclusterexemplaren oplossen

Gebruik de oplossing die overeenkomt met het bewijs uit de diagnostische stappen.

Elk mogelijk eigenaarsknooppunt machtigen om het beheerde wachtwoord op te halen

Autoriseer elk mogelijk eigenaarsknooppunt om het beheerde wachtwoord op te halen en test vervolgens de failover opnieuw naar elk knooppunt. Als de gMSA afzonderlijke computeraccounts autoriseert, Set-ADServiceAccount vervangt u de volledige lijst met geautoriseerde principals. Controleer eerst de bestaande waarde en neem elke principal op die geautoriseerd moet blijven.

# 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"
}

Als een beveiligingsgroep de gMSA autoriseert, voegt u de mogelijke eigenaarsknooppunten toe aan die groep in plaats van de bestaande gMSA-principals te vervangen.

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

Zie de volgende artikelen voor meer informatie:

Corrigeer knooppuntspecifieke rechten, opstartparameters of een onvolledige Setup-status

Corrigeer bevestigde knooppuntspecifieke rechten, opstartparameters of een onvolledige Setup-status. Voer de volgende opdrachten uit op elk knooppunt en vergelijk de resultaten. Vervang <InstanceID> door de exemplaar-ID, zoals 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

Gebruik SQL Server Configuration Manager om verschillen tussen opstartparameters te corrigeren in plaats van het register handmatig te bewerken. Zie de volgende artikelen voor meer informatie:

Als de clusterresourcefout niet is gerelateerd aan het serviceaccount, gebruikt u de volgende opdrachten om de geclusterde rollen, clusterresources en het clusterlogboek te controleren.

# 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"

De FailoverClusters PowerShell-module biedt de Get-ClusterGroup, Get-ClusterResourceen Get-ClusterLog cmdlets. Zie de volgende artikelen voor meer informatie over deze cmdlets:

Zie de volgende artikelen voor SQL Server-specifieke fouten:

Ontbrekende resourcespecifieke registersleutels opnieuw maken

Als u ontbrekende resourcespecifieke registersleutels opnieuw wilt maken, volgt u de stappen in Handmatig resourcespecifieke registersleutels opnieuw maken. Voordat u de gedocumenteerde registerwijzigingen aanbrengt, identificeert u de SQL Server clusterbronnen en maakt u een back-up van het clusterregister.

# 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

Kopieer geen registerwaarden tussen niet-gerelateerde exemplaren. Controleer de exemplaar-id, gedeelde opslagpaden, geclusterde rol en knooppunt voordat u een wijziging aanbrengt.

Diagnostische gegevens verzamelen

Als de fout zich blijft voordoen nadat u deze stappen hebt voltooid, verzamelt u diagnostische gegevens van elk mogelijk eigenaarsknooppunt, inclusief het clusterlogboek voor dezelfde resourceovergang. Zie Diagnostische gegevens verzamelen in het overzicht van het oplossen van problemen met gMSA voor het verzamelen van gMSA-specifieke gegevens en standaardlogboeken SQL Server. Gebruik deze gegevens om door te gaan met het onderzoek of om een ondersteuningsaanvraag te openen.