Partager via


Le service de gestion HPC ne parvient pas à démarrer après la restauration de la base de données

Cet article fournit une solution à un problème où HPC Management Service ne parvient pas à démarrer après la restauration d’une base de données endommagée.

Symptômes

Après avoir restauré une base de données de gestion HPC endommagée, le service de gestion HPC ne parvient pas à s’initialiser. Vous redémarrez le nœud principal et vérifiez que tous les autres services HPC sont en cours d’exécution status. Toutefois, le service de gestion HPC ne peut toujours pas être démarré.

L’erreur suivante s’affiche dans les journaux des événements hpC Management :

Le service de gestion HPC n’a pas pu s’initialiser correctement : la instance collection d’ID ne peut pas être résolue dans la vue instance actuelle.

Cause

Le service de gestion HPC s’est arrêté avec « InstanceCacheLoadException ». Voici le message d’erreur dans le journal des événements HPC Management :

[HPCManagement] Exception : Microsoft.SystemDefinitionModel.InstanceCacheLoadException : la instance collection d’ID ne peut pas être résolue dans la vue instance actuelle.

Ce problème se produit car de nombreuses instances sont dans un état incorrect. Pour chaque instance, il ne doit y avoir qu’une seule version à l’état « Actuel » (la valeur instanceState est 2). Lorsque le problème se produit, il existe des instances avec deux ou trois versions à l’état « Actuel » (la valeur instanceState est 2). Pour vérifier le nombre de versions instance dans l’état « Actuel », exécutez la requête SQL suivante sur une base de données de gestion HPC :

SELECT instanceId, count(*) as Number FROM Instances where instanceState = 2 group by instanceId having count(*) > 1

Pour chaque instanceId retourné par la requête SQL ci-dessus, exécutez la requête SQL suivante :

SELECT Instances.instanceId, Instances.changeId, Instances.instanceVersion, Instances.instanceName, Instances.instanceState, Changes.changeName, Changes.changeState FROM Instances INNER JOIN Changes on Instances.changeId = Changes.changeId Where Instances.instanceId = '<instanceId>' and Instances.instanceState <> 3 Order by Instances.instanceVersion DESC

Résolution

Pour résoudre le problème, corrigez les instances dans un état incorrect. Pour cela, procédez comme suit :

  1. Enregistrez le script PowerShell suivant en tant que fichier FixInstanceStateError.ps1.

    param (
        [Parameter(Mandatory=$true)]
        [string] $ServerInstance,
    
        [Parameter(Mandatory=$false)]
        [string] $Database = "HpcManagement"
    )
    
    $dupInstances = Invoke-Sqlcmd -ServerInstance $ServerInstance -Database $Database -Query "SELECT instanceId, count(*) as Number FROM Instances where instanceState = 2 group by instanceId having count(*) > 1"
    $instanceIds = $dupInstances.instanceId
    $idsString = $instanceIds -join "','"
    $instanceEntries = Invoke-Sqlcmd -ServerInstance $ServerInstance -Database $Database -Query "SELECT * FROM Instances Where instanceId IN ('$idsString') and instanceState = 2"
    $sortedEntries = $instanceEntries | Sort-Object -Property @{Expression="instanceId"; Descending=$true},@{Expression="instanceVersion"; Descending=$true}
    $idMap = @{}
    foreach($entry in $sortedEntries)
    {
        if($idMap[$entry.instanceId])
        {
            Invoke-Sqlcmd -ServerInstance $ServerInstance -Database $Database -Query "Update Instances set instanceState = 3 where instanceId = '$($entry.instanceId)' and instanceVersion = $($entry.instanceVersion)"
        }
        else
        {
            $idMap[$entry.instanceId] = $true
        }
    }
    
  2. Exécutez PowerShell en tant qu’administrateur.

  3. Exécutez la commande suivante :

    .\FixInstanceStateError.ps1 -ServerInstance SQLserver -Database HpcManagement
    
  4. Redémarrez le service HpC SDM Store et le service de gestion HPC.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.