Del via


Synkroniser skaleringsreplikaer

I denne artikel beskrives det, hvordan du synkroniserer en semantisk modelskaleringsreplikaer ved hjælp af PowerShell på kommandolinjen eller ved hjælp af script.

Når du arbejder mod den primære semantiske læse-/skrivemodel, og semantiske modelbrugere bruger de skrivebeskyttede replikaer, kan du udføre opdateringer og opdateringer af semantiske modelmetadata uden at påvirke dem. Ændringer af den semantiske modelmodel og opdateringer finder dog sted i den primære semantiske model. Hvis du vil kopiere ændringerne til de skrivebeskyttede replikaer, skal den synkroniseres med den semantiske model med læse-/skriveadgang.

Parameteren er som standard autoSyncReadOnlyReplicas angivet til true – Power BI synkroniserer replikaerne automatisk. Du kan deaktivere automatisk synkronisering ved at angive autoSyncReadOnlyReplicas til false. Du kan dog vælge at synkronisere manuelt ved hjælp syncStatus af og sync REST API'er.

Hvis du vil kontrollere synkroniseringsstatussen for dine replikaer, skal du bruge REST-API'en SyncStatus . I denne artikel beskrives PowerShell-kommandoerne til brug af denne API.

Kontrollér 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 angivet til "Ikke tilgængelig", kan du prøve at indlæse semantisk models læse-/skrivereplika eller udføre en opdatering af modellen for at få den seneste synkroniseringsstatus.

Du kan få mere at vide under Datasæt – Hent synkroniseringsstatus for skalering af forespørgsel i gruppe i Power BI REST API-referencen.

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

Udfør en manuel replikasynkronisering (script)

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

Du kan få mere at vide under Datasæt – Udløs synkronisering af udskalering af forespørgsel i gruppe i POWER BI REST API-referencen.

Udfør en manuel replikasynkronisering (kommandolinje)

Følg disse trin for at synkronisere replikaerne ved hjælp af Windows PowerShell:

  1. Åbn PowerShell, og log på Power BI ved at køre denne kommando:

    Login-PowerBI
    
  2. Hent dine arbejdsområde-id'er ved at køre kommandoen nedenfor. Erstat <WorkspaceName> med navnet på arbejdsområdet.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. Hent det semantiske model-id ved at køre kommandoen nedenfor. Erstat <WorkspaceId> med id'et for dit arbejdsområde.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. Kontrollér synkroniseringsstatussen for din semantiske model ved hjælp af kommandoen nedenfor. Erstat værdierne for <WorkspaceId> og <DatasetId> i overensstemmelse hermed.

    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 outputtet minActiveReadVersion refererer værdierne og minActiveReadTimestamp til den skrivebeskyttede replika. Værdierne commitVersion og commitTimestamp henviser til den semantiske læse-/skrivemodel. En forskel mellem dem angiver, at den skrivebeskyttede replika repræsenterer en ældre version af den semantiske model.

  5. Synkroniser den semantiske model med læse-/skriveadgang og skrivebeskyttede replikaer ved hjælp af følgende kommando. Erstat værdierne for <WorkspaceId> og <DatasetId> i overensstemmelse hermed.

    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
    

    Oplysningerne om synkroniseringsstatus i outputtet angiver, at den semantiske læse-/skrivemodel og de skrivebeskyttede replikaer ikke er synkroniseret, hvilket forventes, fordi du netop har udløst synkroniseringen.

  6. Kør kommandoen i trin 4 igen for at kontrollere, at synkroniseringen syncStatus er fuldført. Du skal muligvis køre kommandoen et par gange, afhængigt af hvor lang tid det tager at synkronisere semantiske modelkopier. Når synkroniseringen er fuldført, skal du kontrollere værdierne for syncStartTime og syncEndTime for at se, hvor lang tid synkroniseringen tog.

Du kan få mere at vide under Datasæt – Udløs synkronisering af udskalering af forespørgsel i gruppe i POWER BI REST API-referencen.