Restaurer un pool SQL dédié existant

Dans cet article, vous allez apprendre à restaurer un pool SQL dédié existant dans Azure Synapse Analytics en utilisant le portail Azure, Synapse Studio et PowerShell. Cet article s’applique à la fois aux restaurations et aux restaurations géographiques.

Remarque

Ces conseils d’aide concernent uniquement les pools SQL dédiés dans les espaces de travail Azure Synapse. Pour les pools SQL dédiés autonomes (anciennement SQL DW), consultez Restaurer un pool SQL dédié existant (anciennement SQL DW).

Restaurer un pool SQL dédié existant via Synapse Studio

  1. Connectez-vous au portail Azure.

  2. Accédez à votre espace de travail Azure Synapse.

  3. Sous Démarrage ->Ouvrir Synapse Studio, sélectionnez Ouvrir. Capture d’écran de Synapse Studio, montrant la zone Ouvrir Synapse Studio et le lien Ouvrir.

  4. Dans le volet de navigation de gauche, cliquez sur Données.

  5. Sélectionnez Gérer les pools.

  6. Sélectionnez + Nouveau pour créer un pool SQL dédié dans l’espace de travail Azure Synapse Analytics.

  7. Sous l’onglet Paramètres supplémentaires, sélectionnez un Point de restauration à partir duquel effectuer la restauration.

    Si vous souhaitez effectuer une restauration géographique, sélectionnez l’espace de travail et le pool SQL dédié que vous souhaitez récupérer.

  8. Sélectionnez Points de restauration automatiques ou Points de restauration définis par l’utilisateur.

    Capture d’écran du portail Azure, page Créer un pool SQL, page Paramètres supplémentaires. Pour le type de point de restauration, la case d'option Points de restauration automatiques est sélectionnée.

    • Si le pool SQL dédié n’a aucun point de restauration automatique, patientez quelques heures, ou créez un point de restauration défini par l’utilisateur avant d’effectuer la restauration. Pour les points de restauration définis par l’utilisateur, sélectionnez un point existant ou créez-en un nouveau.

    • Si vous souhaitez restaurer un pool SQL dédié à partir d’un autre espace de travail, sélectionnez Nouveau pool SQL dédié à partir de votre espace de travail actuel. Sous l’onglet Paramètres supplémentaires, recherchez Utiliser les données existantes et sélectionnez l’option Point de restauration. Comme illustré dans la capture d’écran ci-dessus, vous pouvez ensuite sélectionner le nom du serveur ou de l’espace de travail à partir duquel vous pouvez restaurer.

    • Si vous restaurez une géosauvegarde, sélectionnez l’espace de travail situé dans la région source et le pool SQL dédié à restaurer.

    Notes

    Vous ne pouvez pas effectuer une restauration sur place d’un pool SQL portant le même nom qu’un pool existant. Et ceci, que le pool SQL se trouve dans le même espace de travail ou dans un espace de travail différent.

  9. Sélectionnez Vérifier + créer.

Restaurer un pool SQL dédié existant via le portail Azure

  1. Connectez-vous au portail Azure.

  2. Accédez au pool SQL dédié à partir duquel effectuer la restauration.

  3. En haut de la page Vue d’ensemble, sélectionnez Restaurer.

    Capture d’écran du portail Azure montrant la page vue d’ensemble du pool SQL. Le bouton Restaurer est mis en surbrillance.

  4. Sélectionnez Points de restauration automatiques ou Points de restauration définis par l’utilisateur.

    Si le pool SQL dédié n’a pas de points de restauration automatiques, patientez quelques heures ou créez un point de restauration défini par l’utilisateur avant la restauration.

    Si vous souhaitez effectuer une restauration géographique, sélectionnez l’espace de travail et le pool SQL dédié que vous souhaitez récupérer.

  5. Sélectionnez Vérifier + créer.

Restaurer un pool SQL dédié existant via PowerShell

  1. Ouvrez un terminal PowerShell.

  2. Connectez-vous à votre compte Azure et répertoriez tous les abonnements associés à votre compte.

  3. Sélectionnez l’abonnement contenant le pool SQL à restaurer.

  4. Listez les points de restauration pour le pool SQL dédié.

  5. Sélectionnez le point de restauration souhaité à l’aide de l’élément RestorePointCreationDate.

  6. Restaurez le pool SQL dédié sur le point de restauration souhaité en utilisant l’applet de commande PowerShell Restore-AzSynapseSqlPool.

    • Pour restaurer le pool SQL dédié sur un autre espace de travail, veillez à spécifier le nom de cet espace de travail. Cet espace de travail peut également se trouver dans un groupe de ressources et une région différents.
    • Pour effectuer une restauration sur un autre abonnement, consultez Restaurer un pool SQL dédié existant sur un autre abonnement avec PowerShell plus loin dans cet article.
  7. Vérifiez que le pool SQL dédié restauré est en ligne.

    
    $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
    

Restaurer un pool SQL dédié existant sur un autre abonnement avec PowerShell

Durant une restauration entre abonnements, un pool SQL dédié d’un espace de travail Azure Synapse peut uniquement effectuer une restauration directe sur un pool SQL dédié autonome (anciennement SQL DW). S’il est nécessaire de restaurer un pool SQL dédié d’un espace de travail Azure Synapse vers un espace de travail de l’abonnement de destination, une étape de restauration supplémentaire est obligatoire.

L’exemple PowerShell suivant est similaire au précédent, à trois différences près :

  • Une fois l’objet du pool SQL à restaurer récupéré, le contexte d’abonnement doit être basculé vers le nom de l’abonnement de destination (ou cible).
  • Lors de l’exécution de la restauration, utilisez les modules Az.Sql à la place des modules Az.Synapse.
  • L’exemple de code ci-dessous comporte des étapes supplémentaires pour la restauration sur un espace de travail Azure Synapse dans l’abonnement de destination. Décommentez les commandes PowerShell comme indiqué dans l’exemple.

Étapes :

  1. Ouvrez un terminal PowerShell.

  2. Mettez à jour le module Az.Sql vers la version 3.8.0 (ou ultérieure) si vous utilisez une version antérieure à l’aide de Update-Module. Dans le cas contraire, des échecs se produiront. Pour vérifier votre version 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. Connectez-vous à votre compte Azure et répertoriez tous les abonnements associés à votre compte.

  4. Sélectionnez l’abonnement contenant le pool SQL à restaurer.

  5. Listez les points de restauration pour le pool SQL dédié.

  6. Choisissez le point de restauration souhaité en utilisant RestorePointCreationDate.

  7. Sélectionnez l’abonnement de destination sur lequel le pool SQL doit être restauré.

  8. Restaurez le pool SQL dédié sur le point de restauration souhaité à l’aide de l’applet de commande PowerShell Restore-AzSqlDatabase.

  9. Vérifiez que le pool SQL dédié restauré (anciennement SQL DW) est en ligne.

  10. Si la destination souhaitée est un espace de travail Synapse, décommentez le code pour effectuer l’étape de restauration supplémentaire.

    1. Créez un point de restauration pour l’entrepôt de données récemment créé.

    2. Récupérez le dernier point de restauration créé en utilisant la syntaxe Select -Last 1.

    3. Effectuez la restauration sur l’espace de travail Azure Synapse souhaité.

      $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
      
      

Résolution des problèmes

Une opération de restauration peut causer l’échec d’un déploiement sur la base d’une exception « RequestTimeout ».

Capture d’écran de la boîte de dialogue des déploiements de groupes de ressources montrant une exception relative au délai d’expiration.

Vous pouvez ignorer ce délai d’expiration. Passez en revue la page du pool SQL dédié dans le portail Azure ; il est possible que son état soit encore « En cours de restauration », mais il finira par passer à « En ligne ».

Capture d’écran de la boîte de dialogue du pool SQL dont l’état indique qu’une restauration est en cours.