Share via


Scale-outreplica's synchroniseren

In dit artikel wordt beschreven hoe u een semantische modelschaalreplica's synchroniseert met behulp van PowerShell op de opdrachtregel of met behulp van een script.

Wanneer u werkt met het primaire semantische semantische model voor lezen/schrijven en semantische modelgebruikers de alleen-lezen replica's gebruiken, kunt u metagegevensupdates en vernieuwingen van semantische modellen uitvoeren zonder dat dit van invloed is op deze replica's. Wijzigingen in het semantische modelmodel en vernieuwingen vinden echter plaats in het primaire semantische model. Als u de wijzigingen naar de alleen-lezen replica's wilt kopiëren, moet deze worden gesynchroniseerd met het semantische model voor lezen/schrijven.

De parameter is standaard autoSyncReadOnlyReplicas ingesteld op true : Power BI synchroniseert de replica's automatisch. U kunt automatische synchronisatie uitschakelen door in te stellen autoSyncReadOnlyReplicas op false. U kunt er echter voor kiezen om handmatig te synchroniseren met behulp van syncStatus en sync REST API's.

Gebruik de SyncStatus REST API om de synchronisatiestatus van uw replica's te controleren. In dit artikel worden de PowerShell-opdrachten beschreven voor het gebruik van deze API.

Synchronisatiestatus van replica controleren

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

Als de synchronisatiestatus-API een leeg antwoord retourneert of als scaleOutStatus is ingesteld op 'Niet beschikbaar', probeert u de lees-/schrijfreplica van het semantische model te laden of voert u een vernieuwing uit op het model om de meest recente synchronisatiestatus op te halen.

Zie Voor meer informatie gegevenssets - Query scale out synchronisatiestatus ophalen in groep in de Naslaginformatie over de Rest API van Power BI.

Automatische replicasynchronisatie uitschakelen

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

Handmatige replicasynchronisatie uitvoeren (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/dataset/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json 
}

Write-Host 'Completed'
$response

Zie Voor meer informatie gegevenssets : Synchronisatie van scale-out van query's activeren in groep in de Power BI REST API-verwijzing.

Handmatige replicasynchronisatie uitvoeren (opdrachtregel)

Volg deze stappen om de replica's te synchroniseren met Windows PowerShell:

  1. Open PowerShell en meld u aan bij Power BI door deze opdracht uit te voeren:

    Login-PowerBI
    
  2. Haal uw werkruimte-id's op door de onderstaande opdracht uit te voeren. Vervang door <WorkspaceName> de naam van uw werkruimte.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. Haal de semantische model-id op door de onderstaande opdracht uit te voeren. Vervang door <WorkspaceId> de id van uw werkruimte.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. Controleer de synchronisatiestatus van uw semantische model met behulp van de onderstaande opdracht. Vervang de waarden van <WorkspaceId> en <DatasetId> dienovereenkomstig.

    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 de uitvoer verwijzen de minActiveReadVersion en minActiveReadTimestamp waarden naar de alleen-lezen replica. De commitVersion en commitTimestamp waarden verwijzen naar het semantische model voor lezen/schrijven. Een verschil tussen deze replica geeft aan dat de alleen-lezen replica een oudere versie van het semantische model vertegenwoordigt.

  5. Synchroniseer het semantische model voor lezen/schrijven en alleen-lezen replica's met behulp van de volgende opdracht. Vervang de waarden van <WorkspaceId> en <DatasetId> dienovereenkomstig.

    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
    

    De informatie over de synchronisatiestatus in de uitvoer geeft aan dat het semantische model voor lezen/schrijven en de alleen-lezen replica's niet synchroon zijn, wat wordt verwacht omdat u de synchronisatie zojuist hebt geactiveerd.

  6. Voer de syncStatus opdracht in stap 4 opnieuw uit om te controleren of de synchronisatie is voltooid. Mogelijk moet u de opdracht een paar keer uitvoeren, afhankelijk van de tijd die nodig is om de kopieën van het semantische model te synchroniseren. Wanneer de synchronisatie is voltooid, controleert u de waarden van syncStartTime en syncEndTime bekijkt u hoe lang de synchronisatie duurde.

Zie Voor meer informatie gegevenssets : Synchronisatie van scale-out van query's activeren in groep in de Power BI REST API-verwijzing.