Aracılığıyla paylaş


VERITABANıNı geri yükledikten sonra HPC Yönetim Hizmeti başlatılamıyor

Bu makalede, bozuk bir veritabanını geri yükledikten sonra HPC Yönetim Hizmeti'nin başlatılaamaması sorununa yönelik bir çözüm sağlanır.

Belirtiler

Bozuk bir HPC yönetim veritabanını geri yükledikten sonra HPC Yönetim Hizmeti başlatılamıyor. Baş düğümü yeniden başlatır ve diğer tüm HPC hizmetlerinin çalışır durumda olduğunu doğrularsınız. Ancak HPC Yönetim Hizmeti hala başlatılamıyor.

HPC Yönetimi olay günlüklerinde aşağıdaki hata gösterilir:

HPC Yönetim Hizmeti doğru başlatılamadı: Kimliklerin örnek koleksiyonu geçerli örnek görünümünde çözümlenemiyor.

Neden

HPC Yönetim Hizmeti "InstanceCacheLoadException" ile kilitlendi. HPC Yönetimi olay günlüğündeki hata iletisi aşağıdadır:

[HPCManagement] Özel durum: Microsoft.SystemDefinitionModel.InstanceCacheLoadException: Kimliklerin örnek koleksiyonu geçerli örnek görünümünde çözümlenemez.

Bu sorun, birçok örneğin yanlış durumda olması nedeniyle oluşur. Her örnek için "Geçerli" durumunda yalnızca bir sürüm olmalıdır (instanceState değeri 2'dir). Sorun oluştuğunda, "Geçerli" durumunda iki veya üç sürümü olan örnekler vardır (instanceState değeri 2'dir). "Geçerli" durumdaki örnek sürümlerinin sayısını doğrulamak için bir HPC Yönetim Veritabanı'nda aşağıdaki SQL sorgusunu çalıştırın:

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

Yukarıdaki SQL sorgusu tarafından döndürülen her instanceId için aşağıdaki SQL sorgusunu çalıştırın:

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

Çözüm

Sorunu çözmek için örnekleri yanlış durumda düzeltin. Bunu yapmak için şu adımları uygulayın:

  1. Aşağıdaki PowerShell betiğini FixInstanceStateError.ps1 dosyası olarak kaydedin.

    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. PowerShell'i Yönetici olarak çalıştırın.

  3. Aşağıdaki komutu çalıştırın:

    .\FixInstanceStateError.ps1 -ServerInstance SQLserver -Database HpcManagement
    
  4. HPC SDM Depolama Hizmeti ve HPC Yönetim Hizmeti'ni yeniden başlatın.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.