Restauración de un grupo de SQL dedicado

En este artículo, aprenderá a restaurar un grupo de SQL dedicado existente en Azure Synapse Analytics mediante Azure Portal, Synapse Studio y PowerShell. Este artículo se aplica a las restauraciones y a las restauraciones geográficas.

Nota:

Esta guía es para grupos de SQL dedicados únicamente en áreas de trabajo de Azure Synapse. Para los grupos de SQL dedicados independientes (anteriormente SQL DW), consulte Restauración de un grupo de SQL dedicado existente (anteriormente SQL DW).

Restauración de un grupo de SQL dedicado existente mediante Synapse Studio

  1. Inicie sesión en Azure Portal.

  2. Vaya al área de trabajo de Azure Synapse.

  3. En Introducción>Abrir Synapse Studio, seleccione Abrir. Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. En el panel de navegación izquierdo, seleccione Datos.

  5. Seleccione Administrar grupos.

  6. Seleccione + Nuevo para crear un grupo de SQL dedicado en el área de trabajo de Azure Synapse Analytics.

  7. En la pestaña Configuración adicional, seleccione un punto de restauración desde el que restaurar.

    Si desea realizar una restauración geográfica, seleccione el área de trabajo y el grupo de SQL dedicado que quiere recuperar.

  8. Seleccione Puntos de restauración automáticos o Puntos de restauración definidos por el usuario.

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

    • Si el grupo de SQL dedicado no tiene ningún punto de restauración automática, espere unas horas o cree un punto de restauración definido por el usuario antes de llevar a cabo la restauración. En el caso de los puntos de restauración definidos por el usuario, seleccione uno existente o cree uno nuevo.

    • Si quiere restaurar un grupo de SQL dedicado desde otra área de trabajo, seleccione New dedicated SQL pool (Nuevo grupo de SQL dedicado) en el área de trabajo actual. En la pestaña Configuración adicional, busque Use los datos existentes y seleccione la opción Punto de restauración. Tal como se muestra en la captura de pantalla anterior, puede seleccionar el nombre del servidor o el área de trabajo desde el que puede restaurar.

    • Si va a restaurar una copia de seguridad geográfica, seleccione el área de trabajo que se encuentra en la región de origen y el grupo de SQL dedicado que quiere restaurar.

    Nota

    No se puede realizar una restauración local de un grupo de SQL con el mismo nombre que un grupo existente. Independientemente del grupo de SQL que esté en la misma área de trabajo o en otra.

  9. Seleccione Revisar + crear.

Restauración de un grupo de SQL dedicado existente mediante Azure Portal

  1. Inicie sesión en Azure Portal.

  2. Vaya al grupo de SQL dedicado desde el que desea restaurar.

  3. En la parte superior de la página Información general, seleccione Restaurar.

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

  4. Seleccione Puntos de restauración automáticos o Puntos de restauración definidos por el usuario.

    Si el grupo de SQL dedicado no tiene ningún punto de restauración automática, espere unas horas o cree un punto de restauración definido por el usuario antes de llevar a cabo la restauración.

    Si desea realizar una restauración geográfica, seleccione el área de trabajo y el grupo de SQL dedicado que quiere recuperar.

  5. Seleccione Revisar + crear.

Restauración de un grupo de SQL dedicado existente mediante PowerShell

  1. Abra un terminal de PowerShell.

  2. Conéctese a su cuenta de Azure y enumere todas las suscripciones asociadas a su cuenta.

  3. Seleccione la suscripción que contiene el grupo de SQL que se va a restaurar.

  4. Enumere los puntos de restauración del grupo de SQL dedicado.

  5. Elija el punto de restauración deseado mediante RestorePointCreationDate.

  6. Restaure el grupo de SQL dedicado al punto de restauración deseado mediante el cmdlet de PowerShell Restore-AzSynapseSqlPool.

  7. Compruebe que el grupo de SQL dedicado restaurado está en línea.

    
    $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
    

Restauración de un grupo de SQL dedicado existente en otra suscripción mediante PowerShell

Al realizar una restauración entre suscripciones, un grupo de SQL dedicado de un área de trabajo de Synapse solo se puede restaurar directamente en un grupo de SQL dedicado (anteriormente SQL DW) independiente. Si es necesario restaurar un grupo de SQL dedicado en un área de trabajo de Synapse en un área de trabajo de la suscripción de destino, se requiere realizar un paso de restauración adicional.

El siguiente ejemplo de PowerShell es similar al anterior, pero hay tres diferencias principales:

  • Después de recuperar el objeto de grupo de SQL que se va a restaurar, el contexto de la suscripción debe cambiarse al nombre de la suscripción de destino (o destino).
  • Al realizar la restauración, use los módulos Az.Sql en lugar de los módulos Az.Synapse.
  • El código de ejemplo siguiente tiene pasos adicionales para restaurar en un área de trabajo de Azure Synapse en la suscripción de destino. Quite la marca de comentario de los comandos de PowerShell, tal como se describe en el ejemplo.

Pasos:

  1. Abra un terminal de PowerShell.

  2. Actualice el módulo Az.Sql a la versión 3.8.0 (o una posterior) si tiene una versión anterior mediante Update-Module. De lo contrario, surgirán errores. Para validar la versión mediante 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. Conéctese a su cuenta de Azure y enumere todas las suscripciones asociadas a su cuenta.

  4. Seleccione la suscripción que contiene el grupo de SQL que se va a restaurar.

  5. Enumere los puntos de restauración del grupo de SQL dedicado.

  6. Elija el punto de restauración deseado mediante RestorePointCreationDate.

  7. Seleccione la suscripción de destino en la que se debe restaurar el grupo de SQL.

  8. Restaure el grupo de SQL dedicado al punto de restauración deseado mediante el comando Restore-AzSqlDatabase de PowerShell.

  9. Compruebe que el grupo de SQL dedicado (anteriormente SQL DW) restaurado está en línea.

  10. Si el destino deseado es un área de trabajo de Synapse, quite la marca de comentario del código para realizar el paso de restauración adicional.

    1. Cree un punto de restauración para el almacenamiento de datos recién creado.

    2. Recupere el último punto de restauración creado mediante la sintaxis Select -Last 1.

    3. Realice la restauración en el área de trabajo de Azure Synapse deseada.

      $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
      
      

Solución de problemas

Una operación de restauración puede dar lugar a un error de implementación basado en una excepción "RequestTimeout".

Screenshot from resource group deployments dialog of a timeout exception.

Este error de tiempo de espera puede omitirse. Revise la página del grupo de SQL dedicado en Azure Portal y podría tener el estado "Restaurar" y, finalmente, pasará a "En línea".

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