Wiederherstellen eines vorhandenen dedizierten SQL-Pools

In diesem Artikel erfahren Sie, wie Sie einen vorhandenen dedizierten SQL-Pool in Azure Synapse Analytics im Azure-Portal, mit Synapse Studio und mit PowerShell wiederherstellen können. Dieser Artikel gilt für normale und Geowiederherstellungen.

Hinweis

Diese Anleitung gilt nur für dedizierte SQL-Pools in Azure Synapse Arbeitsbereichen. Informationen zu eigenständigen dedizierten SQL-Pools (ehemals SQL DW) finden Sie unter Wiederherstellen eines dedizierten SQL-Pools (ehemals SQL DW).

Wiederherstellen eines vorhandenen dedizierten SQL-Pools mit Synapse Studio

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zu Ihrem Azure Synapse-Arbeitsbereich.

  3. Wählen Sie unter Erste Schritte >>Synapse Studio öffnen die Option Öffnen aus. Screenshot von Synapse Studio, der das Feld „Synapse Studio öffnen“ und den Link „Öffnen“ zeigt.

  4. Wählen Sie im linken Navigationsbereich Daten aus.

  5. Wählen Sie Pools verwalten aus.

  6. Wählen Sie +Neu aus, um einen neuen dedizierten SQL-Pool im Azure Synapse Analytics-Arbeitsbereich zu erstellen.

  7. Wählen Sie auf der Registerkarte Zusätzliche Einstellungen einen Wiederherstellungspunkt aus, von dem aus die Wiederherstellung erfolgen soll.

    Wenn Sie eine Geowiederherstellung durchführen möchten, wählen Sie den Arbeitsbereich und den dedizierten SQL-Pool aus, den Sie wiederherstellen möchten.

  8. Wählen Sie entweder die Option Automatische Wiederherstellungspunkte oder Benutzerdefinierte Wiederherstellungspunkte aus.

    Screenshot aus dem Azure-Portal, Seite SQL-Pool erstellen, Seite „Zusätzliche Einstellungen“. Bei Wiederherstellungspunkttyp ist das Optionsfeld „Automatische Wiederherstellungspunkte“ ausgewählt.

    • Wenn der dedizierten SQL-Pool keine automatischen Wiederherstellungspunkte umfasst, warten Sie einige Stunden, oder erstellen Sie einen benutzerdefinierten Wiederherstellungspunkt, bevor Sie eine Wiederherstellung durchführen. Wählen Sie für „Benutzerdefinierte Wiederherstellungspunkte“ einen vorhandenen benutzerdefinierten Wiederherstellungspunkt aus, oder erstellen Sie einen neuen.

    • Wenn Sie einen dedizierten SQL-Pool aus einem anderen Arbeitsbereich wiederherstellen möchten, wählen Sie Neuer dedizierter SQL-Pool aus Ihrem aktuellen Arbeitsbereich aus. Suchen Sie auf der Registerkarte Zusätzliche Einstellungen die Option Vorhandene Daten verwenden, und wählen Sie die Option Wiederherstellungspunkt aus. Wie im obigen Screenshot gezeigt, können Sie dann den Namen des Servers oder Arbeitsbereichs auswählen, von dem aus die Wiederherstellung erfolgen soll.

    • Wenn Sie eine Geosicherung wiederherstellen, wählen Sie den Arbeitsbereich in der Quellregion und den dedizierten SQL-Pool aus, den Sie wiederherstellen möchten.

    Hinweis

    Sie können keine direkte Wiederherstellung eines SQL-Pools mit demselben Namen wie ein vorhandener Pool ausführen. Dabei ist es unerheblich, ob sich der SQL-Pool in demselben Arbeitsbereich oder einem anderen Arbeitsbereich befindet.

  9. Klicken Sie auf Überprüfen + erstellen.

Wiederherstellen eines vorhandenen dedizierten SQL-Pools im Azure-Portal

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zum dedizierten SQL-Pool, mit dem Sie die Wiederherstellung durchführen möchten.

  3. Klicken Sie oben auf der Seite Übersicht auf Wiederherstellen.

    Screenshot aus dem Azure-Portal, der die Übersichtsseite des SQL-Pools zeigt. Die Schaltfläche „Wiederherstellen“ ist hervorgehoben.

  4. Wählen Sie entweder die Option Automatische Wiederherstellungspunkte oder Benutzerdefinierte Wiederherstellungspunkte aus.

    Wenn der dedizierten SQL-Pool keine automatischen Wiederherstellungspunkte umfasst, warten Sie einige Stunden, oder erstellen Sie einen benutzerdefinierten Wiederherstellungspunkt, bevor Sie eine Wiederherstellung durchführen.

    Wenn Sie eine Geowiederherstellung durchführen möchten, wählen Sie den Arbeitsbereich und den dedizierten SQL-Pool aus, den Sie wiederherstellen möchten.

  5. Klicken Sie auf Überprüfen + erstellen.

Wiederherstellen eines vorhandenen dedizierten SQL-Pools mit PowerShell

  1. Öffnen Sie ein PowerShell-Terminal.

  2. Stellen Sie eine Verbindung mit Ihrem Azure-Konto her, und listen Sie alle Abonnements auf, die Ihrem Konto zugeordnet sind.

  3. Wählen Sie das Abonnement aus, das den SQL-Pool enthält, der wiederhergestellt werden soll.

  4. Listen Sie die Wiederherstellungspunkte für den dedizierten SQL-Pool auf.

  5. Wählen Sie den gewünschten Wiederherstellungspunkt mit RestorePointCreationDate aus.

  6. Stellen Sie den dedizierten SQL-Pool anhand des gewünschten Wiederherstellungspunkts mit dem PowerShell-Cmdlet Restore-AzSynapseSqlPool wieder her.

  7. Überprüfen Sie, ob der wiederhergestellte dedizierte SQL-Pool online ist.

    
    $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
    

Wiederherstellen eines vorhandenen dedizierten SQL-Pools in einem anderes Abonnement über PowerShell

Wenn Sie eine abonnementübergreifende Wiederherstellung durchführen, kann mit einem dedizierten SQL-Pool in einem Azure Synapse-Arbeitsbereich nur direkt ein eigenständiger dedizierter SQL-Pool (früher SQL DW) wiederhergestellt werden. Wenn der dedizierte SQL-Pool in einem Azure Synapse-Arbeitsbereich in einem Arbeitsbereich im Zielabonnement wiederhergestellt werden muss, ist ein zusätzlicher Wiederherstellungsschritt erforderlich.

Das folgende PowerShell-Beispiel ähnelt dem vorherigen, es gibt jedoch drei wichtige Unterschiede:

  • Nach dem Abrufen des SQL-Pool-Objekts, das wiederhergestellt werden soll, muss der Abonnementkontext in den Namen des Zielabonnements gewechselt werden.
  • Verwenden Sie beim Ausführen der Wiederherstellung anstelle der Az.Synapse-Module die Az.Sql-Module.
  • Der folgende Beispielcode enthält zusätzliche Schritte zum Wiederherstellen in einem Azure Synapse-Arbeitsbereich im Zielabonnement. Heben Sie die Kommentare zu den PowerShell-Befehlen wie im Beispiel beschrieben auf.

Schritte:

  1. Öffnen Sie ein PowerShell-Terminal.

  2. Aktualisieren Sie das Az.Sql-Modul mithilfe von Update-Module auf 3.8.0 (oder höher), wenn Sie eine ältere Version verwenden. Andernfalls kommt es zu Fehlern. So überprüfen Sie Ihre Version mit 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. Stellen Sie eine Verbindung mit Ihrem Azure-Konto her, und listen Sie alle Abonnements auf, die Ihrem Konto zugeordnet sind.

  4. Wählen Sie das Abonnement aus, das den SQL-Pool enthält, der wiederhergestellt werden soll.

  5. Listen Sie die Wiederherstellungspunkte für den dedizierten SQL-Pool auf.

  6. Wählen Sie den gewünschten Wiederherstellungspunkt mit RestorePointCreationDate aus.

  7. Wählen Sie das Zielabonnement aus, in dem der SQL-Pool wiederhergestellt werden soll.

  8. Stellen Sie den dedizierten SQL-Pool anhand des gewünschten Wiederherstellungspunkts mit dem PowerShell-Cmdlet Restore-AzSqlDatabase wieder her.

  9. Überprüfen Sie, ob der wiederhergestellte dedizierte SQL-Pool (früher SQL DW) online ist.

  10. Wenn das gewünschte Ziel ein Synapse-Arbeitsbereich ist, können Sie den Code auskommentieren, um den zusätzlichen Wiederherstellungsschritt auszuführen.

    1. Erstellen Sie einen Wiederherstellungspunkt für das neu erstellte Data Warehouse.

    2. Rufen Sie den letzten erstellten Wiederherstellungspunkt unter Verwendung der Select -Last 1-Syntax ab.

    3. Führen Sie die Wiederherstellung im gewünschten Azure Synapse-Arbeitsbereich aus.

      $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
      
      

Problembehandlung

Ein Wiederherstellungsvorgang kann aufgrund einer „RequestTimeout“-Ausnahme zu einem Fehler bei der Bereitstellung führen.

Screenshot einer Timeoutausnahme im Dialogfeld zur Bereitstellung von Ressourcengruppen.

Dieser Timeout kann ignoriert werden. Überprüfen Sie die Seite für den dedizierten SQL-Pool im Azure-Portal. Möglicherweise weist sie noch den Status „Wird wiederhergestellt“ auf und wechselt schließlich zu „Online“.

Screenshot des SQL-Pool-Dialogfelds mit dem Status „Wird wiederhergestellt“.