Partager via


Restaurer un pool SQL dédié à partir d’un espace de travail supprimé

Dans cet article, vous allez apprendre à restaurer un pool SQL dédié dans Azure Synapse Analytics après la suppression accidentelle d’un espace de travail avec PowerShell.

Notes

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), suivez les conseils d’aide fournis dans Restaurer un pool SQL à partir d’un serveur supprimé.

Avant de commencer

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Restaurer le pool SQL à partir de l’espace de travail supprimé

L’exemple de script suivant effectue les étapes suivantes :

  1. Ouvrez PowerShell

  2. Connectez-vous à votre compte Azure.

  3. Définissez le contexte sur l’abonnement contenant l’espace de travail supprimé.

  4. Détermination de la date à laquelle l’espace de travail a été supprimé. Cette étape récupère la date et l’heure exactes à laquelle le pool SQL de l’espace de travail a été supprimé.

    • Cette étape part du principe que l’espace de travail ayant le même nom de groupe de ressources et les mêmes valeurs est toujours disponible.
    • Si ce n’est pas le cas, recréez l’espace de travail supprimé avec le même nom d’espace de travail, le même nom de groupe de ressources, la même région et toutes les mêmes valeurs que l’espace de travail supprimé.
  5. Création d’une chaîne de l’ID de ressource du pool SQL que vous souhaitez récupérer. Le format nécessite Microsoft.Sql. Cela inclut la date et l’heure à laquelle le serveur a été supprimé.

  6. Restauration de la base de données à partir de l’espace de travail supprimé. Restauration de l’espace de travail cible avec le pool SQL source.

  7. Vérifiez que l’état de la base de données récupérée est « en ligne ».

    $SubscriptionID = "<YourSubscriptionID>"
    $ResourceGroupName = "<YourResourceGroupName>"
    $WorkspaceName = "<YourWorkspaceNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
    $DatabaseName = "<YourDatabaseName>"
    $TargetResourceGroupName = "<YourTargetResourceGroupName>"
    $TargetWorkspaceName = "<YourtargetServerNameWithoutURLSuffixSeeNote>"
    $TargetDatabaseName = "<YourDatabaseName>"
    
    Connect-AzAccount
    Set-AzContext -SubscriptionID $SubscriptionID
    
    # Get the exact date and time the workspace SQL pool was dropped.
    # This assumes that the workspace with the same name resource group and same values is still available.
    # If not, recreate the dropped workspace with the same workspace name, resource group name, region, 
    # and all the same values from prior dropped workspace.
    # There should only be one selection to select from.
    $paramsGetDroppedSqlPool = @{
        ResourceGroupName = $ResourceGroupName
        WorkspaceName     = $WorkspaceName
        Name              = $DatabaseName
    }
    $DroppedDateTime = Get-AzSynapseDroppedSqlPool @paramsGetDroppedSqlPool `
        | Select-Object -ExpandProperty DeletionDate
    
    # Construct a string of the resource ID of the sql pool you wish to recover.
    # The format requires Microsoft.Sql. This includes the approximate date time the server was dropped.
    $SourceDatabaseID = "/subscriptions/$SubscriptionID/resourceGroups/$ResourceGroupName/providers/" `
                    + "Microsoft.Sql/servers/$WorkspaceName/databases/$DatabaseName"    
    
    # Restore to the target workspace with the source SQL pool.
    $paramsRestoreSqlPool = @{
        FromDroppedSqlPool  = $true
        DeletionDate        = $DroppedDateTime
        TargetSqlPoolName   = $TargetDatabaseName
        ResourceGroupName   = $TargetResourceGroupName
        WorkspaceName       = $TargetWorkspaceName
        ResourceId          = $SourceDatabaseID
    }
    $RestoredDatabase = Restore-AzSynapseSqlPool @paramsRestoreSqlPool
    
    # Verify the status of restored database
    $RestoredDatabase.status
    

Résolution des problèmes

Si vous recevez le message « Une erreur inattendue s’est produite lors du traitement de la requête », la base de données d’origine peut ne pas avoir de points de récupération disponibles en raison de la courte durée de vie de l’espace de travail d’origine. En général, cela se produit lorsque l’espace de travail existe depuis moins d’une heure.