Ripristinare un pool SQL dedicato esistente

Questo articolo illustra come ripristinare un pool SQL dedicato esistente in Azure Synapse Analytics usando portale di Azure, Synapse Studio e PowerShell. Questo articolo si applica sia ai ripristini che ai ripristini geografici.

Nota

Queste indicazioni sono esclusivamente per i pool SQL dedicati nelle aree di lavoro Azure Synapse. Per i pool SQL dedicati autonomi (in precedenza SQL Data Warehouse), vedere Ripristinare un pool SQL dedicato esistente (in precedenza SQL Data Warehouse).

Ripristinare un pool SQL dedicato esistente tramite Synapse Studio

  1. Accedere al portale di Azure.

  2. Passare all'area di lavoro di Azure Synapse.

  3. In Getting Started -Open Synapse Studio (Introduzione -> Apri Synapse Studio) selezionare Open (Apri). Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. Nel riquadro di spostamento a sinistra selezionare Dati.

  5. Selezionare Gestisci pool.

  6. Selezionare + Nuovo per creare un nuovo pool SQL dedicato nell'area di lavoro Azure Synapse Analytics.

  7. Nella scheda Impostazioni aggiuntivo selezionare un punto di ripristino da cui eseguire il ripristino.

    Per eseguire un ripristino geografico, selezionare l'area di lavoro e il pool SQL dedicato da ripristinare.

  8. Selezionare Punto di ripristino automatico o Punti di ripristino definiti dall'utente.

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

    • Se il pool SQL dedicato non dispone di punti di ripristino automatici, attendere alcune ore o creare un punto di ripristino definito dall'utente prima del ripristino. Per Punti di ripristino definiti dall'utente, selezionare uno esistente o crearne uno nuovo.

    • Per ripristinare un pool SQL dedicato da un'area di lavoro diversa, selezionare Nuovo pool SQL dedicato dall'area di lavoro corrente. Nella scheda Impostazioni aggiuntive individuare l'opzione Usa dati esistenti e selezionare l'opzione Punto di ripristino . Come illustrato nello screenshot precedente, è quindi possibile selezionare il nome del server o dell'area di lavoro da cui è possibile eseguire il ripristino.

    • Se si ripristina un backup geografico, selezionare l'area di lavoro che si trova nell'area di origine e il pool SQL dedicato da ripristinare.

    Nota

    Non è possibile eseguire un ripristino sul posto di un pool SQL con lo stesso nome di un pool esistente. Indipendentemente dal pool SQL che si trova nella stessa area di lavoro o in un'area di lavoro diversa.

  9. Selezionare Rivedi e crea.

Ripristinare un pool SQL dedicato esistente tramite il portale di Azure

  1. Accedere al portale di Azure.

  2. Passare al pool SQL dedicato da cui si vuole eseguire il ripristino.

  3. Nella parte superiore della pagina Panoramica selezionare Ripristina.

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

  4. Selezionare Punto di ripristino automatico o Punti di ripristino definiti dall'utente.

    Se il pool SQL dedicato non dispone di punti di ripristino automatici, attendere alcune ore o creare un punto di ripristino definito dall'utente prima del ripristino.

    Per eseguire un ripristino geografico, selezionare l'area di lavoro e il pool SQL dedicato da ripristinare.

  5. Selezionare Rivedi e crea.

Ripristinare un pool SQL dedicato esistente tramite PowerShell

  1. Aprire un terminale di PowerShell.

  2. Connettersi al proprio account Azure ed elencare tutte le sottoscrizioni associate all'account.

  3. Selezionare la sottoscrizione contenente il pool SQL da ripristinare.

  4. Elencare i punti di ripristino per il pool SQL dedicato.

  5. Selezionare il punto di ripristino desiderato utilizzando RestorePointCreationDate.

  6. Ripristinare il pool SQL dedicato nel punto di ripristino desiderato usando il cmdlet di PowerShell Restore-AzSynapseSqlPool .

  7. Verificare che il pool SQL dedicato ripristinato sia online.

    
    $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
    

Ripristinare un pool SQL dedicato esistente in una sottoscrizione diversa tramite PowerShell

Quando si esegue un ripristino tra sottoscrizioni, un pool SQL dedicato in un'area di lavoro di Azure Synapse può eseguire il ripristino solo direttamente in un pool SQL dedicato autonomo (in precedenza SQL Data Warehouse). Se è necessario ripristinare un pool SQL dedicato in un'area di lavoro di Azure Synapse in un'area di lavoro nella sottoscrizione di destinazione, è necessario un passaggio di ripristino aggiuntivo.

L'esempio di PowerShell seguente è simile al precedente, ma esistono tre differenze principali:

  • Dopo aver recuperato l'oggetto pool SQL da ripristinare, il contesto della sottoscrizione deve essere passato al nome della sottoscrizione di destinazione (o di destinazione).
  • Quando si esegue il ripristino, usare i moduli Az.Sql anziché i moduli Az.Synapse.
  • Il codice di esempio seguente include passaggi aggiuntivi per il ripristino in un'area di lavoro di Azure Synapse nella sottoscrizione di destinazione. Rimuovere il commento dai comandi di PowerShell come descritto nell'esempio.

Passaggi:

  1. Aprire un terminale di PowerShell.

  2. Aggiornare il modulo Az.Sql alla versione 3.8.0 (o successiva) se in una versione precedente usando Update-Module. In caso contrario, causerà errori. Per convalidare la versione tramite 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. Connettersi al proprio account Azure ed elencare tutte le sottoscrizioni associate all'account.

  4. Selezionare la sottoscrizione contenente il pool SQL da ripristinare.

  5. Elencare i punti di ripristino per il pool SQL dedicato.

  6. Selezionare il punto di ripristino desiderato usando RestorePointCreationDate.

  7. Selezionare la sottoscrizione di destinazione in cui ripristinare il pool SQL.

  8. Ripristinare il pool SQL dedicato nel punto di ripristino desiderato usando il cmdlet di PowerShell Restore-AzSqlDatabase .

  9. Verificare che il pool SQL dedicato ripristinato (in precedenza SQL Data Warehouse) sia online.

  10. Se la destinazione desiderata è un'area di lavoro di Synapse, rimuovere il commento dal codice per eseguire il passaggio di ripristino aggiuntivo.

    1. Creare un punto di ripristino per il data warehouse appena creato.

    2. Recuperare l'ultimo punto di ripristino creato usando la Select -Last 1 sintassi .

    3. Eseguire il ripristino nell'area di lavoro di Azure Synapse desiderata.

      $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
      
      

Risoluzione dei problemi

Un'operazione di ripristino può causare un errore di distribuzione in base a un'eccezione "RequestTimeout".

Screenshot from resource group deployments dialog of a timeout exception.

Questo timeout può essere ignorato. Esaminare la pagina del pool SQL dedicato nella portale di Azure e potrebbe avere ancora lo stato "Ripristino" e alla fine passerà a "Online".

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