Synkronisera utskalningsrepliker
Den här artikeln beskriver hur du synkroniserar utskalningsrepliker för en semantisk modell med hjälp av PowerShell på kommandoraden eller med skript.
När du arbetar mot den primära semantiska modellen för skrivskydd och semantiska modellanvändare använder skrivskyddade repliker kan du utföra uppdateringar och uppdateringar av semantiska modellmetadata utan att påverka dem. Ändringar i den semantiska modellmodellen och uppdateringar sker dock i den primära semantiska modellen. Om du vill kopiera ändringarna till skrivskyddade repliker måste de synkroniseras med läs-och-skriv-semantikmodellen.
Som standard är parametern inställd på autoSyncReadOnlyReplicas
true
– Power BI synkroniserar replikerna automatiskt. Du kan inaktivera automatisk synkronisering genom att ange autoSyncReadOnlyReplicas
till false
. Du kan dock välja att synkronisera manuellt med hjälp syncStatus
av OCH sync
REST-API:er.
Om du vill kontrollera synkroniseringsstatusen för dina repliker använder du REST-API:et SyncStatus
. I den här artikeln beskrivs PowerShell-kommandona för att använda det här API:et.
Kontrollera status för repliksynkronisering
###
# 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
}
Om synkroniseringsstatus-API:et returnerar ett tomt svar eller om scaleOutStatus är inställt på "Ej tillgänglig" kan du försöka läsa in semantikmodellens skrivskyddade replik eller utföra en uppdatering av modellen för att få den senaste synkroniseringsstatusen.
Mer information finns i Datauppsättningar – Hämta synkroniseringsstatus för frågeskalning i grupp i Power BI REST API-referensen.
Inaktivera automatisk repliksynkronisering
###
# 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
}
}
Utföra en manuell repliksynkronisering (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
Mer information finns i Datauppsättningar – Utlös frågeskalningssynkronisering i grupp i Power BI REST API-referensen.
Utföra en manuell repliksynkronisering (kommandorad)
Följ dessa steg för att synkronisera replikerna med hjälp av Windows PowerShell:
Öppna PowerShell och logga in på Power BI genom att köra det här kommandot:
Login-PowerBI
Hämta dina arbetsyte-ID:er genom att köra kommandot nedan. Ersätt
<WorkspaceName>
med namnet på din arbetsyta.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspace
Hämta det semantiska modell-ID:t genom att köra kommandot nedan. Ersätt
<WorkspaceId>
med ID:t för din arbetsyta.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspace
Kontrollera synkroniseringsstatusen för din semantiska modell med hjälp av kommandot nedan. Ersätt värdena
<WorkspaceId>
för och<DatasetId>
därefter.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
I utdata
minActiveReadVersion
refererar värdena ochminActiveReadTimestamp
till den skrivskyddade repliken. VärdenacommitVersion
ochcommitTimestamp
refererar till läs-och-skriv-semantisk modell. En skillnad mellan dem anger att den skrivskyddade repliken representerar en äldre version av den semantiska modellen.Synkronisera den skrivskyddade semantiska modellen och skrivskyddade repliker med hjälp av följande kommando. Ersätt värdena
<WorkspaceId>
för och<DatasetId>
därefter.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
Informationen om synkroniseringsstatusen i utdata anger att semantikmodellen för skrivskyddade skrivskyddade repliker och att de skrivskyddade replikerna är osynkroniserade, vilket förväntas eftersom du just utlöste synkroniseringen.
Kontrollera att synkroniseringen är klar genom att
syncStatus
köra kommandot i steg 4 igen. Du kan behöva köra kommandot några gånger beroende på hur lång tid det tar att synkronisera semantiska modellkopior. När synkroniseringen är klar kontrollerar du värdenasyncStartTime
för ochsyncEndTime
för att se hur lång tid synkroniseringen tog.
Mer information finns i Datauppsättningar – Utlös frågeskalningssynkronisering i grupp i Power BI REST API-referensen.