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 pour 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 à initialiser. Vous redémarrez le nœud principal et vérifiez que tous les autres services HPC sont en cours d’exécution. 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 HPC Management n’a pas pu s’initialiser correctement : la collection d’instances des ID ne peut pas être résolue dans la vue d’instance actuelle.

Cause

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

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

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

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 ce faire, 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 ISE en tant qu’administrateur.

  3. Exécutez la commande suivante :

    .\FixInstanceStateError.ps1 -ServerInstance SQLserver -Database HpcManagement
    
  4. Redémarrez le service magasin HPC SDM 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.