Freigeben über


Synchronisieren von Replikaten mit horizontaler Skalierung

In diesem Artikel wird beschrieben, wie Sie horizontal skalierte Replikate von Semantikmodellen mithilfe von PowerShell an der Befehlszeile oder per Skript synchronisieren.

Wenn Sie mit dem primären Semantikmodell mit Lese- und Schreibzugriff arbeiten und die Semantikmodellbenutzer*innen die schreibgeschützten Replikate verwenden, können Sie die Semantikmodellmetadaten aktualisieren und erneuern, ohne sie zu beeinträchtigen. Änderungen und Aktualisierungen des Semantikmodells erfolgen jedoch im primären Semantikmodell. Um die Änderungen in die schreibgeschützten Replikate zu kopieren, muss das Semantikmodell mit dem schreibgeschützten Semantikmodell synchronisiert werden.

Standardmäßig ist der Parameter autoSyncReadOnlyReplicas auf true festgelegt: Power BI synchronisiert die Replikate automatisch. Sie können die automatische Synchronisierung deaktivieren, indem Sie autoSyncReadOnlyReplicas auf false festlegen. Sie können jedoch die manuelle Synchronisierung mithilfe der syncStatus- und sync-REST-APIs auswählen.

Verwenden Sie die SyncStatus-REST-API, um den Synchronisierungsstatus Ihrer Datasetkopien zu überprüfen. In diesem Artikel werden die PowerShell-Befehle für die Verwendung dieser API beschrieben.

Überprüfen des Synchronisationsstatus der Replik

###
# Check the scale-out replica sync status
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json 
$response | Format-List

if ($response.commitVersion -eq $response.minActiveReadVersion)
{
    Write-Host "Semantic model read-write and read-only replicas are in sync."
}
else
{
    Write-Host "Semantic model read-write and read-only replicas are not in sync." -ForegroundColor Red
}

Wenn die Synchronisierungsstatus-API eine leere Antwort zurückgibt oder scaleOutStatus auf Nicht verfügbar festgelegt ist, versuchen Sie, das Lese-/Schreibreplikat des Semantikmodells zu laden oder eine Aktualisierung des Modells durchzuführen, um den neuesten Synchronisierungsstatus abzurufen.

Weitere Informationen finden Sie unter Datasets – Abfrage des horizontalen Skalierungs- und Synchronisierungsstatus in der Gruppe in der Power BI-REST-API-Referenz.

Deaktivieren der automatischen Replikatsynchronisierung

###
# Disable automatic scale-out replica sync
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" `
    -Method Patch -Body '{ "queryScaleOutSettings": { "autoSyncReadOnlyReplicas": false }}'

Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" -Method Get `
    | ConvertFrom-Json | Select-Object -ExpandProperty queryScaleOutSettings `
    | ForEach { 
        if($_.autoSyncReadOnlyReplicas -eq $false)
        { 
            Write-Host "Success! Automatic replica synchronization has been disabled."
        } else
        {
            Write-Host "Something went wrong! Automatic replica synchronization is still enabled." -ForegroundColor Red
        }
     }

Durchführen einer manuellen Replikatsynchronisation (Skript)

###
# Perform a manual replica sync
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/sync" -Method Post -Body "" | ConvertFrom-Json

Write-Host 'Synchronizing the scale-out replicas...' -NoNewLine

while ($response.commitVersion -ne $response.minActiveReadVersion)
{
    Write-Host '.' -NoNewLine
    Start-Sleep -Seconds 10

    $response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json 
}

Write-Host 'Completed'
$response

Weitere Informationen finden Sie unter Datasets – Trigger-Abfrage Scale Out Sync In Group in der Power BI-REST-API-Referenz.

Durchführen einer manuellen Replikatsynchronisierung (Befehlszeile)

Führen Sie diese Schritte aus, um die Replikate mit Hilfe von Windows PowerShell zu synchronisieren:

  1. Öffnen Sie PowerShell und melden Sie sich bei Power BI an, indem Sie den folgenden Befehl ausführen:

    Login-PowerBI
    
  2. Rufen Sie Ihre Arbeitsbereichs-IDs ab, indem Sie den folgenden Befehl ausführen. Ersetzen Sie <WorkspaceName> durch den Namen Ihres Arbeitsbereichs.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. Rufen Sie die Semantikmodell-ID ab, indem Sie den Befehl unten ausführen. Ersetzen Sie <WorkspaceId> durch die ID Ihres Arbeitsbereichs.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. Überprüfen Sie den Synchronisierungsstatus Ihres Semantikmodells mit dem folgenden Befehl. Ersetzen Sie die Werte von <WorkspaceId> und <DatasetId> entsprechend.

    Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/syncStatus' -Method Get | ConvertFrom-Json | Format-List  # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
    

    In der Ausgabe verweisen die Werte minActiveReadVersion und minActiveReadTimestamp auf das schreibgeschützte Replikat. Die Werte commitVersion und commitTimestamp verweisen auf das Semantikmodell mit Lese-/Schreibzugriff. Wenn es einen Unterschied zwischen den beiden gibt, ist das schreibgeschützte Replikat eine ältere Version des Semantikmodells.

  5. Synchronisieren Sie das Lese-/Schreibsemantikmodell und die schreibgeschützten Replikate mithilfe des folgenden Befehls. Ersetzen Sie die Werte von <WorkspaceId> und <DatasetId> entsprechend.

    Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/sync' -Method Post -Body "" | ConvertFrom-Json | Format-List  # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
    

    Die Information zum Synchronisierungsstatus in der Ausgabe gibt an, dass die Semantikmodelle mit Lese-/Schreibzugriff und die schreibgeschützten Replikate nicht synchron sind. Dies ist zu erwarten, da Sie gerade erst die Synchronisierung ausgelöst haben.

  6. Führen Sie den Befehl syncStatus in Schritt 4 erneut aus, um zu überprüfen, ob die Synchronisierung abgeschlossen ist. Abhängig von der erforderlichen Synchronisierungsdauer für die Semantikmodellkopien müssen Sie den Befehl möglicherweise mehrmals ausführen. Überprüfen Sie nach Abschluss der Synchronisierung die Werte von syncStartTime und syncEndTime , um zu ermitteln, wie lange die Synchronisierung gedauert hat.

Weitere Informationen finden Sie unter Datasets – Trigger-Abfrage Scale Out Sync In Group in der Power BI-REST-API-Referenz.