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:
Öffnen Sie PowerShell und melden Sie sich bei Power BI an, indem Sie den folgenden Befehl ausführen:
Login-PowerBI
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
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
Ü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
undminActiveReadTimestamp
auf das schreibgeschützte Replikat. Die WertecommitVersion
undcommitTimestamp
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.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.
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 vonsyncStartTime
undsyncEndTime
, 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.