Een bestaande toegewezen SQL-pool herstellen

In dit artikel leert u hoe u een bestaande toegewezen SQL-pool herstelt in Azure Synapse Analytics met behulp van Azure Portal, Synapse Studio en PowerShell. Dit artikel is van toepassing op zowel herstelbewerkingen als geo-herstelbewerkingen.

Notitie

Deze richtlijnen zijn alleen bedoeld voor toegewezen SQL-pools in Azure Synapse werkruimten. Zie Een bestaande toegewezen SQL-pool (voorheen SQL DW) herstellen voor zelfstandige toegewezen SQL-pools (voorheen SQL DW).

Een bestaande toegewezen SQL-pool herstellen via de Synapse Studio

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar uw Azure Synapse-werkruimte.

  3. Selecteer Openen onder Aan de slag -> Open Synapse Studio. Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. Selecteer Gegevens in het navigatiedeelvenster aan de linkerkant.

  5. Selecteer Pools beheren.

  6. Selecteer + Nieuw om een nieuwe toegewezen SQL-pool te maken in de Azure Synapse Analytics-werkruimte.

  7. Selecteer op het tabblad Extra Instellingen een herstelpunt waaruit u wilt herstellen.

    Als u een geo-herstelbewerking wilt uitvoeren, selecteert u de werkruimte en toegewezen SQL-pool die u wilt herstellen.

  8. Selecteer Automatische herstelpunten of door de gebruiker gedefinieerde herstelpunten.

    Screenshot from the Azure portal, Create SQL pool page, Additional settings page. For Restore point type, the Automatic restore points radio button is selected.

    • Als de toegewezen SQL-pool geen automatische herstelpunten heeft, wacht u enkele uren of maakt u een door de gebruiker gedefinieerd herstelpunt voordat u het herstelt. Voor door de gebruiker gedefinieerde herstelpunten selecteert u een bestaande of maakt u een nieuwe.

    • Als u een toegewezen SQL-pool uit een andere werkruimte wilt herstellen, selecteert u Nieuwe toegewezen SQL-pool in uw huidige werkruimte. Zoek op het tabblad Aanvullende instellingen de optie Bestaande gegevens gebruiken en selecteer de optie Herstelpunt . Zoals wordt weergegeven in de bovenstaande schermopname, kunt u vervolgens de server- of werkruimtenaam selecteren waaruit u kunt herstellen.

    • Als u een geo-back-up herstelt, selecteert u de werkruimte in de bronregio en de toegewezen SQL-pool die u wilt herstellen.

    Notitie

    U kunt een in-place herstel van een SQL-pool met dezelfde naam als een bestaande pool niet uitvoeren. Ongeacht de SQL-pool die zich in dezelfde werkruimte of in een andere werkruimte bevindt.

  9. Selecteer Controleren + maken.

Een bestaande toegewezen SQL-pool herstellen via de Azure-portal

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar de toegewezen SQL-pool waaruit u wilt herstellen.

  3. Selecteer bovenaan de pagina Overzicht de optie Herstellen.

    Screenshot from the Azure portal, showing the SQL pool overview page. The Restore button is highlighted.

  4. Selecteer Automatische herstelpunten of door de gebruiker gedefinieerde herstelpunten.

    Als de toegewezen SQL-pool geen automatische herstelpunten heeft, wacht u enkele uren of maakt u een door de gebruiker gedefinieerd herstelpunt voordat u het herstelt.

    Als u een geo-herstelbewerking wilt uitvoeren, selecteert u de werkruimte en toegewezen SQL-pool die u wilt herstellen.

  5. Selecteer Controleren + maken.

Een bestaande toegewezen SQL-pool herstellen via de PowerShell

  1. Open een PowerShell-terminal.

  2. Verbinding maken naar uw Azure-account en vermeld alle abonnementen die aan uw account zijn gekoppeld.

  3. Selecteer het abonnement dat de SQL-pool bevat die u wilt herstellen.

  4. Geef de herstelpunten voor de toegewezen SQL-pool weer.

  5. Kies het gewenste herstelpunt met de RestorePointCreationDate.

  6. Herstel de toegewezen SQL-pool naar het gewenste herstelpunt met behulp van de PowerShell-cmdlet Restore-AzSynapseSqlPool .

  7. Controleer of de herstelde toegewezen SQL-pool online is.

    
    $SubscriptionName="<YourSubscriptionName>"
    $ResourceGroupName="<YourResourceGroupName>"
    $WorkspaceName="<YourWorkspaceNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
    #$TargetResourceGroupName="<YourTargetResourceGroupName>" # uncomment to restore to a different workspace.
    #$TargetWorkspaceName="<YourtargetWorkspaceNameWithoutURLSuffixSeeNote>"  
    $SQLPoolName="<YourDatabaseName>"
    $NewSQLPoolName="<YourDatabaseName>"
    
    Connect-AzAccount
    Get-AzSubscription
    Select-AzSubscription -SubscriptionName $SubscriptionName
    
    # list all restore points
    Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
    $PointInTime="<RestorePointCreationDate>"
    
    # Get the specific SQL pool to restore
    $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
    $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
        -replace "workspaces", "servers" `
        -replace "sqlPools", "databases"
    
    # Restore database from a restore point
    $RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $SQLPool.ResourceGroupName `
        -WorkspaceName $SQLPool.WorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Use the following command to restore to a different workspace
    #$TargetResourceGroupName = $SQLPool.ResourceGroupName # for restoring to different workspace in same resourcegroup 
    #$RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $TargetResourceGroupName `
    #    -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Verify the status of restored database
    $RestoredDatabase.status
    

Een bestaande toegewezen SQL-pool herstellen naar een ander abonnement via PowerShell

Wanneer u een herstel voor meerdere abonnementen uitvoert, kan een toegewezen SQL-pool in een Azure Synapse-werkruimte alleen rechtstreeks herstellen naar een zelfstandige toegewezen SQL-pool (voorheen SQL DW). Als het nodig is om een toegewezen SQL-pool in een Azure Synapse-werkruimte te herstellen naar een werkruimte in het doelabonnement, is een extra herstelstap vereist.

Het volgende PowerShell-voorbeeld is vergelijkbaar met het vorige, maar er zijn drie belangrijke verschillen:

  • Nadat u het SQL-poolobject hebt opgehaald dat moet worden hersteld, moet de abonnementscontext worden overgeschakeld naar de naam van het doelabonnement (of doel).
  • Wanneer u de herstelbewerking uitvoert, gebruikt u de Az.Sql-modules in plaats van de Az.Synapse-modules.
  • De onderstaande voorbeeldcode bevat aanvullende stappen voor het herstellen naar een Azure Synapse-werkruimte in het doelabonnement. Verwijder opmerkingen bij de PowerShell-opdrachten zoals beschreven in het voorbeeld.

Stappen:

  1. Open een PowerShell-terminal.

  2. Werk Az.Sql-module bij naar 3.8.0 (of hoger) als u een oudere versie gebruikt Update-Module. Anders veroorzaakt dit fouten. Uw versie valideren via PowerShell:

    foreach ($i in (get-module -ListAvailable | ?{$_.name -eq 'az.sql'}).Version) { $version = [string]$i.Major + "." + [string]$i.Minor; if ($version -gt 3.7) {write-host "Az.Sql version $version installed. Prequisite met."} else {update-module az.sql} }
    
  3. Verbinding maken naar uw Azure-account en vermeld alle abonnementen die aan uw account zijn gekoppeld.

  4. Selecteer het abonnement dat de SQL-pool bevat die u wilt herstellen.

  5. Geef de herstelpunten voor de toegewezen SQL-pool weer.

  6. Kies het gewenste herstelpunt met de RestorePointCreationDate.

  7. Selecteer het doelabonnement waarin de SQL-pool moet worden hersteld.

  8. Herstel de toegewezen SQL-pool naar het gewenste herstelpunt met behulp van de Cmdlet Restore-AzSqlDatabase PowerShell.

  9. Controleer of de herstelde toegewezen SQL-pool (voorheen SQL DW) online is.

  10. Als de gewenste bestemming een Synapse-werkruimte is, verwijdert u de opmerking bij de code om de extra herstelstap uit te voeren.

    1. Maak een herstelpunt voor het nieuw gemaakte datawarehouse.

    2. Haal het laatste herstelpunt op dat is gemaakt met behulp van de Select -Last 1 syntaxis.

    3. Voer de herstelbewerking uit naar de gewenste Azure Synapse-werkruimte.

      $SourceSubscriptionName="<YourSubscriptionName>"
      $SourceResourceGroupName="<YourResourceGroupName>"
      $SourceWorkspaceName="<YourServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $SourceSQLPoolName="<YourDatabaseName>"
      $TargetSubscriptionName="<YourTargetSubscriptionName>"
      $TargetResourceGroupName="<YourTargetResourceGroupName>"
      $TargetServerName="<YourTargetServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $TargetDatabaseName="<YourDatabaseName>"
      #$TargetWorkspaceName="<YourTargetWorkspaceName>" # uncomment if restore to an Azure Synapse workspace is required
      
      # Update Az.Sql module to the latest version (3.8.0 or above)
      # Update-Module -Name Az.Sql -RequiredVersion 3.8.0
      
      Connect-AzAccount
      Get-AzSubscription
      Select-AzSubscription -SubscriptionName $SourceSubscriptionName
      
      # list all restore points
      Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
      $PointInTime="<RestorePointCreationDate>"
      
      # Get the specific SQL pool to restore
      $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
      $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
          -replace "workspaces", "servers" `
          -replace "sqlPools", "databases"
      
      # Switch context to the destination subscription
      Select-AzSubscription -SubscriptionName $TargetSubscriptionName
      
      # Restore database from a desired restore point of the source database to the target server in the desired subscription
      $RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $TargetResourceGroupName `
          -ServerName $TargetServerName -TargetDatabaseName $TargetDatabaseName –ResourceId $DatabaseID
      
      # Verify the status of restored database
      $RestoredDatabase.status
      
      # uncomment below cmdlets to perform one more restore to push the SQL Pool to an existing workspace in the destination subscription
      # # Create restore point
      # New-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName -RestorePointLabel "UD-001"
      # # Gets the last restore point of the sql dw (will use the RestorePointCreationDate property)
      # $RestorePoint = Get-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName | Select -Last 1
      # # Restore to destination synapse workspace
      # $FinalRestore = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $RestorePoint.RestorePointCreationDate -ResourceGroupName $TargetResourceGroupName `
      #     -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $TargetDatabaseName –ResourceId $RestoredDatabase.ResourceID -PerformanceLevel DW100c
      
      

Problemen oplossen

Een herstelbewerking kan leiden tot een implementatiefout op basis van de uitzondering RequestTimeout.

Screenshot from resource group deployments dialog of a timeout exception.

Deze time-out kan worden genegeerd. Bekijk de pagina van de toegewezen SQL-pool in Azure Portal en heeft mogelijk nog steeds de status 'Herstellen' en wordt uiteindelijk overgestapt op Online.

Screenshot of SQL pool dialog with the status that shows restoring.