Udostępnij za pośrednictwem


Nie można uruchomić usługi ZARZĄDZANIA HPC po przywróceniu bazy danych

Ten artykuł zawiera rozwiązanie problemu polegającego na tym, że uruchomienie usługi HPC Management Service nie powiodło się po przywróceniu uszkodzonej bazy danych.

Symptomy

Po przywróceniu uszkodzonej bazy danych zarządzania HPC usługa ZARZĄDZANIA HPC nie może zainicjować. Należy ponownie uruchomić węzeł główny i sprawdzić, czy wszystkie inne usługi HPC są w stanie uruchomienia. Nie można jednak uruchomić usługi ZARZĄDZANIA HPC.

W dziennikach zdarzeń usługi HPC Management jest wyświetlany następujący błąd:

Nie można poprawnie zainicjować usługi ZARZĄDZANIA HPC: nie można rozpoznać kolekcji wystąpień identyfikatorów w bieżącym widoku wystąpienia.

Przyczyna

Usługa ZARZĄDZANIA HPC uległa awarii z błędem "InstanceCacheLoadException". Oto komunikat o błędzie w dzienniku zdarzeń zarządzania HPC:

[HPCManagement] Wyjątek: Microsoft.SystemDefinitionModel.InstanceCacheLoadException: Nie można rozpoznać kolekcji wystąpień identyfikatorów w bieżącym widoku wystąpienia.

Ten problem występuje, ponieważ wiele wystąpień jest w nieprawidłowym stanie. W przypadku każdego wystąpienia w stanie "Current" powinna znajdować się tylko jedna wersja (wartość instanceState to 2). W przypadku wystąpienia problemu występują wystąpienia z dwiema lub trzema wersjami w stanie "Current" (wartość instanceState to 2). Aby sprawdzić liczbę wersji wystąpień w stanie "Current", uruchom następujące zapytanie SQL względem bazy danych zarządzania HPC:

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

Dla każdego identyfikatora instanceId zwróconego przez powyższe zapytanie SQL uruchom następujące zapytanie SQL:

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

Rozwiązanie

Aby rozwiązać ten problem, rozwiąż problemy z wystąpieniami w nieprawidłowym stanie. W tym celu wykonaj następujące kroki:

  1. Zapisz następujący skrypt programu PowerShell jako plik 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. Uruchom program PowerShell jako administrator.

  3. Uruchom następujące polecenie:

    .\FixInstanceStateError.ps1 -ServerInstance SQLserver -Database HpcManagement
    
  4. Uruchom ponownie usługę magazynu HPC SDM i usługę zarządzania HPC.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.