Ripristinare un pool SQL dedicato esistente

Questo articolo illustra come ripristinare un pool SQL dedicato esistente in Azure Synapse Analytics usando il portale di Azure e PowerShell. L’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 DW), vedere Ripristinare un pool SQL dedicato (in precedenza SQL DW).

Ripristinare un pool SQL dedicato esistente tramite Synapse Studio

  1. Accedere al portale di Azure.

  2. Andare all’area di lavoro di Azure Synapse.

  3. In Introduzione ->Apri Synapse Studio, selezionare Apri. Screenshot di Synapse Studio, che mostra la casella Apri Synapse Studio e il collegamento Apri.

  4. Nel riquadro di spostamento a sinistra fare clic su 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 aggiuntive 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 della pagina Portale di Azure, Crea pool SQL e Impostazioni aggiuntive. Per Tipo di punto di ripristino, è selezionato il pulsante di opzione Punti di ripristino automatico.

    • Se per il pool SQL dedicato non sono impostati punti di ripristino automatici, attendere qualche ora o creare un punto di ripristino definito dall'utente prima di eseguire il 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 selezionare Usa dati esistenti seguito da 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 che ha lo stesso nome di un pool esistente. A prescindere che il pool SQL si trovi nella stessa area di lavoro o in un'area di lavoro differente.

  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 ripristinare e selezionarlo.

  3. Nella parte superiore della pagina Panoramica selezionare Ripristina.

    Screenshot della portale di Azure, che mostra la pagina di panoramica del pool SQL. Il pulsante Ripristina è evidenziato.

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

    Se per il pool SQL dedicato non sono impostati punti di ripristino automatici, attendere qualche ora o creare un punto di ripristino definito dall'utente prima di eseguire il 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 che contiene 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 al punto di ripristino desiderato usando il cmdlet Restore-AzSynapseSqlPool di PowerShell.

  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 passando da un sottoscrizione a un'altra, un pool SQL dedicato di un'area di lavoro di Azure Synapse può essere ripristinato direttamente solo in un pool SQL dedicato standalone (in precedenza SQL DW). Se è necessario ripristinare un pool SQL dedicato di un'area di lavoro di Azure Synapse in un'area di lavoro nella sottoscrizione di destinazione, occorrerà eseguire un passaggio di ripristino aggiuntivo.

Il seguente esempio di PowerShell è simile al precedente, ma con 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 target).
  • Quando si esegue il ripristino, usare i moduli Az.Sql anziché quelli 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, si verificheranno 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 che contiene il pool SQL da ripristinare.

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

  6. Selezionare il punto di ripristino desiderato utilizzando RestorePointCreationDate.

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

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

  9. Verificare che il pool SQL dedicato ripristinato (in precedenza SQL DW) 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 sintassi Select -Last 1.

    3. Eseguire il ripristino nell'area di lavoro 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 basato su un'eccezione "RequestTimeout".

Screenshot della finestra di dialogo distribuzioni di gruppi di risorse di un'eccezione di timeout.

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

Screenshot della finestra di dialogo del pool SQL con lo stato che mostra il ripristino.