Del via


Synkronisere utskaleringsreplikaer

Denne artikkelen beskriver hvordan du synkroniserer en semantisk modell som skalerer ut replikaer ved hjelp av PowerShell på kommandolinjen eller med skript.

Når du arbeider mot den primære semantiske modellen for leseskriving, og semantiske modellbrukere bruker skrivebeskyttede replikaer, kan du utføre semantiske metadataoppdateringer for semantiske modeller og oppdateringer uten å påvirke dem. Endringer i semantisk modellmodell og oppdateringer foregår imidlertid i den primære semantiske modellen. Hvis du vil kopiere endringene til de skrivebeskyttede replikaene, må de synkroniseres med lese-skrive semantisk modell.

Som standard er parameteren autoSyncReadOnlyReplicas satt til true – Power BI synkroniserer replikaene automatisk. Du kan deaktivere automatisk synkronisering ved å angi autoSyncReadOnlyReplicas til false. Du kan imidlertid velge å synkronisere manuelt ved hjelp syncStatus av og sync REST-API-er.

Hvis du vil kontrollere synkroniseringsstatusen for replikaene, bruker SyncStatus du REST-API-en. Denne artikkelen beskriver PowerShell-kommandoene for bruk av denne API-en.

Kontrollere synkroniseringsstatus for replika

###
# 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
}

Hvis synkroniseringsstatus-API-en returnerer et tomt svar, eller hvis scaleOutStatus er satt til «Utilgjengelig», kan du prøve å laste inn den semantiske modellens replika for leseskriving eller utføre en oppdatering på modellen for å få den nyeste synkroniseringsstatusen.

Hvis du vil ha mer informasjon, kan du se Datasett – Få synkroniseringsstatusen For spørringsskala i gruppe i POWER BI REST-API-referansen.

Deaktivere automatisk replikasynkronisering

###
# 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øre en manuell replikasynkronisering (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

Hvis du vil ha mer informasjon, kan du se Datasett – Utskaler synkronisering av utløserspørring i gruppe i Power BI REST-API-referansen.

Utføre en manuell replikasynkronisering (kommandolinje)

Følg disse trinnene for å synkronisere replikaene ved hjelp av Windows PowerShell:

  1. Åpne PowerShell, og logg på Power BI ved å kjøre denne kommandoen:

    Login-PowerBI
    
  2. Få arbeidsområde-ID-ene dine ved å kjøre kommandoen nedenfor. Erstatt <WorkspaceName> med navnet på arbeidsområdet.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. Få semantisk modell-ID ved å kjøre kommandoen nedenfor. Erstatt <WorkspaceId> med IDen for arbeidsområdet.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. Kontroller synkroniseringsstatusen for den semantiske modellen ved hjelp av kommandoen nedenfor. Erstatt verdiene <WorkspaceId> for og <DatasetId> tilsvarende.

    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 utdataene minActiveReadVersion refererer verdiene og minActiveReadTimestamp verdiene til den skrivebeskyttede replikaen. commitTimestamp Og commitVersion verdiene, se semantisk modell for leseskriving. En forskjell mellom dem angir at den skrivebeskyttede replikaen representerer en eldre versjon av den semantiske modellen.

  5. Synkroniser skrivebeskyttet semantisk modell og skrivebeskyttede replikaer ved hjelp av følgende kommando. Erstatt verdiene <WorkspaceId> for og <DatasetId> tilsvarende.

    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
    

    Synkroniseringsstatusinformasjonen i utdataene angir den leseskrivende semantiske modellen, og skrivebeskyttede replikaer er ikke synkronisert, noe som forventes fordi du nettopp utløste synkroniseringen.

  6. Hvis du vil bekrefte at synkroniseringen er fullført, kjører syncStatus du kommandoen i trinn 4 på nytt. Du må kanskje kjøre kommandoen et par ganger, avhengig av hvor lang tid det kreves for å synkronisere de semantiske modellkopiene. Når synkroniseringen er fullført, kontrollerer du verdiene syncStartTime for og syncEndTime for å se hvor lang tid synkroniseringen tok.

Hvis du vil ha mer informasjon, kan du se Datasett – Utskaler synkronisering av utløserspørring i gruppe i Power BI REST-API-referansen.