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
Accedere al portale di Azure.
Andare all’area di lavoro di Azure Synapse.
In Introduzione ->Apri Synapse Studio, selezionare Apri.
Nel riquadro di spostamento a sinistra fare clic su Dati.
Selezionare Gestisci pool.
Selezionare + Nuovo per creare un nuovo pool SQL dedicato nell'area di lavoro Azure Synapse Analytics.
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.
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 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.
Selezionare Rivedi e crea.
Ripristinare un pool SQL dedicato esistente tramite il portale di Azure
Accedere al portale di Azure.
Passare al pool SQL dedicato da ripristinare e selezionarlo.
Nella parte superiore della pagina Panoramica selezionare Ripristina.
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.
Selezionare Rivedi e crea.
Ripristinare un pool SQL dedicato esistente tramite PowerShell
Aprire un terminale di PowerShell.
Connettersi al proprio account Azure ed elencare tutte le sottoscrizioni associate all'account.
Selezionare la sottoscrizione che contiene il pool SQL da ripristinare.
Elencare i punti di ripristino per il pool SQL dedicato.
Selezionare il punto di ripristino desiderato utilizzando RestorePointCreationDate.
Ripristinare il pool SQL dedicato al punto di ripristino desiderato usando il cmdlet Restore-AzSynapseSqlPool di PowerShell.
- Per ripristinare il pool SQL dedicato eliminato in un’area di lavoro differente, assicurarsi di specificare l'altro nome del server. Quest’area di lavoro può anche trovarsi in un gruppo di risorse e un'area diversi.
- Per eseguire il ripristino in una sottoscrizione differente, vedere Ripristinare un pool SQL dedicato esistente in una sottoscrizione diversa tramite PowerShell in seguito in questo articolo.
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:
Aprire un terminale di PowerShell.
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} }
Connettersi al proprio account Azure ed elencare tutte le sottoscrizioni associate all'account.
Selezionare la sottoscrizione che contiene il pool SQL da ripristinare.
Elencare i punti di ripristino per il pool SQL dedicato.
Selezionare il punto di ripristino desiderato utilizzando RestorePointCreationDate.
Selezionare la sottoscrizione di destinazione in cui ripristinare il pool SQL.
Ripristinare il pool SQL dedicato al punto di ripristino desiderato usando il cmdlet Restore-AzSqlDatabase di PowerShell.
Verificare che il pool SQL dedicato ripristinato (in precedenza SQL DW) sia online.
Se la destinazione desiderata è un'area di lavoro di Synapse, rimuovere il commento dal codice per eseguire il passaggio di ripristino aggiuntivo.
Creare un punto di ripristino per il data warehouse appena creato.
Recuperare l'ultimo punto di ripristino creato usando la sintassi
Select -Last 1
.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".
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".