Dela via


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:

  1. Öppna PowerShell och logga in på Power BI genom att köra det här kommandot:

    Login-PowerBI
    
  2. 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
    
  3. 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
    
  4. 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 och minActiveReadTimestamp till den skrivskyddade repliken. Värdena commitVersion och commitTimestamp 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.

  5. 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.

  6. 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ärdena syncStartTime för och syncEndTime 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.