Condividi tramite


Ripristinare un pool SQL dedicato da un'area di lavoro eliminata

Questo articolo spiega come ripristinare un pool SQL dedicato in Azure Synapse Analytics dopo l'eliminazione accidentale di un'area di lavoro con PowerShell.

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), seguire le indicazioni in Ripristinare il pool SQL dal server eliminato.

Operazioni preliminari

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Ripristinare il pool SQL dall'area di lavoro eliminata

Lo script di esempio seguente esegue questi passaggi:

  1. Aprire PowerShell

  2. Connettersi all'account di Azure.

  3. Impostare il contesto sulla sottoscrizione contenente l'area di lavoro eliminata.

  4. Determinare il valore datetime in cui è stata eliminata l'area di lavoro. Questo passaggio recupera la data e l'ora esatte dell'eliminazione del pool SQL dell'area di lavoro.

    • Questo passaggio presuppone che l'area di lavoro con lo stesso gruppo di risorse con lo stesso nome e gli stessi valori siano ancora disponibili.
    • In caso contrario, ricreare l'area di lavoro eliminata con lo stesso nome dell'area di lavoro, il nome del gruppo di risorse, l'area e tutti gli stessi valori dell'area di lavoro precedentemente eliminata.
  5. Costruire una stringa l'ID risorsa del pool SQL che si vuole ripristinare. Il formato richiede Microsoft.Sql. Sono inclusi la data e l'ora in cui il server è stato eliminato.

  6. Ripristinare il database dall'area di lavoro eliminata. Eseguire il ripristino nell'area di lavoro di destinazione con il pool SQL di origine.

  7. Verificare lo stato del database ripristinato come "online".

    $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
    

Risoluzione dei problemi

Se si riceve il messaggio "Errore imprevisto durante l'elaborazione della richiesta", il database originale potrebbe non avere punti di ripristino disponibili a causa della breve durata dell'area di lavoro originale. In genere, questo problema si verifica quando l'area di lavoro esiste per meno di un'ora.