Eseguire il backup e il ripristino di database in SQL Edge di Azure
Importante
SQL Edge di Azure verrà ritirato il 30 settembre 2025. Per altre informazioni e per le opzioni di migrazione, vedere l'avviso di ritiro.
Nota
SQL Edge di Azure non supporta più la piattaforma ARM64.
SQL Edge di Azure si basa sulle versioni più recenti del motore di database Microsoft SQL. Offre funzionalità di backup e ripristino simili a SQL Server in Linux e SQL Server in esecuzione nei contenitori. Il componente di backup e ripristino rappresenta uno strumento essenziale per la sicurezza e la protezione di dati archiviati nei database SQL Edge di Azure.
Per ridurre al minimo il rischio di perdita irreparabile dei dati, è consigliabile eseguire regolarmente il backup dei database per preservare le modifiche ai dati. Una strategia di backup e ripristino ben pianificata aiuta a proteggere i database dalla perdita di dati dovuta a vari errori. Testare la strategia ripristinando un set di backup e poi recuperando il database per prepararsi a rispondere in modo efficace a una situazione di emergenza.
Per altre informazioni sull'importanza dei backup, vedere Backup e ripristino di database SQL Server.
SQL Edge di Azure consente di eseguire il backup e il ripristino sia dall'archiviazione locale che dai BLOB di Azure. Per altre informazioni, vedere Backup e ripristino di SQL Server con l'archiviazione BLOB di Azure e Backup di SQL Server nell'URL.
Backup di un database in SQL Edge di Azure
SQL Edge di Azure supporta gli stessi tipi di backup supportati da SQL Server. Per un elenco completo, vedere Panoramica del backup.
Importante
Per impostazione predefinita, i database creati in SQL Edge di Azure usano il modello di recupero con registrazione minima. Di conseguenza, in questi database non è possibile eseguire backup del log. Se si deve eseguire questa operazione, è necessario un amministratore per modificare il modello di recupero del database nel modello di recupero con registrazione completa. Per un elenco completo dei modelli di recupero supportati da SQL Server, vedere Panoramica del modello di recupero.
Eseguire il backup su disco locale
Nel seguente esempio viene usato il comando Transact-SQL BACKUP DATABASE
per creare un backup del database nel contenitore. Per questo esempio, si crea una nuova cartella denominata backup per archiviare i file di backup.
Creare una cartella per i backup. Eseguire questo comando nell'host in cui è in esecuzione il contenitore SQL Edge di Azure. Nel comando seguente sostituire <AzureSQLEdge_Container_Name> con il nome del contenitore SQL Edge di Azure nella distribuzione.
sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
Connettersi all'istanza di SQL Edge di Azure usando SQL Server Management Studio (SSMS) o Azure Data Studio. Eseguire il comando
BACKUP DATABASE
per effettuare il backup del database utente. Nel seguente esempio viene effettuato il backup del databaseIronOreSilicaPrediction
.BACKUP DATABASE [IronOreSilicaPrediction] TO DISK = N'/var/opt/mssql/backup/IronOrePredictDB.bak' WITH NOFORMAT, NOINIT, NAME = N'IronOreSilicaPrediction-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10; GO
Dopo aver eseguito il comando, se il backup del database ha esito positivo, verranno visualizzati messaggi simili ai seguenti nella sezione dei risultati di SSMS o Azure Data Studio.
10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. 80 percent processed. 90 percent processed. 100 percent processed. Processed 51648 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction' on file 1. Processed 2 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction_log' on file 1. BACKUP DATABASE successfully processed 51650 pages in 3.588 seconds (112.461 MB/sec). Completion time: 2020-04-09T23:54:48.4957691-07:00
Backup nell’URL
SQL Edge di Azure supporta i backup sia sui BLOB di pagine che sui BLOB in blocchi. Per altre informazioni, vedere Eseguire il backup nel BLOB in blocchi e nel BLOB di pagine. Nell'esempio seguente viene eseguito il backup del database IronOreSilicaPrediction
in un BLOB in blocchi.
Per configurare i backup in BLOB in blocchi, generare prima di tutto un token di firma di accesso condiviso (SAS) che è possibile usare per creare credenziali di SQL Server in SQL Edge di Azure. Lo script crea una firma di accesso condiviso associata a un criterio di accesso archiviato. Per altre informazioni, vedere Firme di accesso condiviso, parte 1: informazioni sul modello di firma di accesso condiviso. Lo script scrive inoltre il comando T-SQL necessario per creare le credenziali in SQL Server. Lo script seguente presuppone che sia già presente una sottoscrizione di Azure con un account di archiviazione e un contenitore di archiviazione per i backup.
# Define global variables for the script $subscriptionName='<your subscription name>' # the name of subscription name you will use $resourcegroupName = '<your resource group name>' # the name of resource group you will use $storageAccountName= '<your storage account name>' # the storage account name you will use for backups $containerName= '<your storage container name>' # the storage container name to which you will attach the SAS policy with its SAS token $policyName = 'SASPolicy' # the name of the SAS policy # adds an authenticated Azure account for use in the session Login-AzAccount # set the tenant, subscription and environment for use in the rest of Select-AzSubscription -Subscription $subscriptionName # Generate the SAS token $sa = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName $storagekey = Get-AzStorageAccountKey -ResourceGroupName $resourcegroupName -Name $storageAccountName $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storagekey[0].Value $cbc = Get-AzStorageContainer -Name $containerName -Context $storageContext $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld" $sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName Write-Host 'Shared Access Signature= '$($sas.Substring(1))'' # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature Write-Host 'Credential T-SQL' $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.CloudBlobContainer.Uri.AbsoluteUri,$sas.Substring(1) $tSql | clip Write-Host $tSql
Dopo aver eseguito correttamente lo script, copiare il comando
CREATE CREDENTIAL
in uno strumento di query. Connettersi quindi a un'istanza di SQL Server ed eseguire il comando per creare le credenziali con la firma di accesso condiviso.Connettersi all'istanza di SQL Edge di Azure usando SSMS o Azure Data Studio e creare le credenziali usando il comando del passaggio precedente. Assicurarsi di sostituire il comando
CREATE CREDENTIAL
con l'output effettivo del passaggio precedente.IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
Il comando seguente esegue un backup di
IronOreSilicaPrediction
nel contenitore di archiviazione di Azure.BACKUP DATABASE IronOreSilicaPrediction TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/IronOreSilicaPrediction.bak' With MAXTRANSFERSIZE = 4194304,BLOCKSIZE=65536; GO
Ripristino di un database in SQL Edge di Azure
In SQL Edge di Azure è possibile eseguire il ripristino da un disco locale, da un percorso di rete o da un account di archiviazione BLOB di Azure. Per informazioni sul ripristino e sul recupero in SQL Server, vedere Panoramica del ripristino e del recupero. Per una panoramica del modello di recupero con registrazione minima in SQL Server, vedere Ripristini di database completi (modello di recupero con registrazione minima).
Importante
I database creati in SQL Edge di Azure non possono essere ripristinati in un'istanza di Microsoft SQL Server o SQL di Azure. Inoltre, un database creato in Microsoft SQL Server o SQL di Azure può essere ripristinato in SQL Edge di Azure, purché il database non contenga funzionalità non supportate da SQL Edge di Azure.
Ripristinare da un disco locale
In questo esempio viene usato il backup IronOreSilicaPrediction
eseguito nell'esempio precedente. A questo punto, verrà ripristinato come nuovo database con un nome diverso.
Se il file di backup del database non è già presente nel contenitore, è possibile usare il comando per copiare il file nel contenitore. L'esempio seguente presuppone che il file di backup sia presente nell'host locale e che venga copiato nella cartella /var/opt/MSSQL/backup in un contenitore SQL Edge di Azure denominato sql1.
sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
Connettersi all'istanza di SQL Edge di Azure usando SSMS o Azure Data Studio per eseguire il comando di ripristino. Nell'esempio seguente viene ripristinato
IronOrePredictDB.bak
per creare un nuovo database,IronOreSilicaPrediction_2
.Restore FilelistOnly from disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak' Restore Database IronOreSilicaPrediction_2 From disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak' WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.mdf', MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.ldf';
Dopo aver eseguito il comando di ripristino, se l'operazione di ripristino ha avuto esito positivo, verranno visualizzati dei messaggi simili ai seguenti nella finestra di output.
Processed 51648 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction' on file 1. Processed 2 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction_log' on file 1. RESTORE DATABASE successfully processed 51650 pages in 6.543 seconds (61.670 MB/sec). Completion time: 2020-04-13T23:49:21.1600986-07:00
Ripristino da un URL
SQL Edge di Azure supporta anche il ripristino di un database da un account di archiviazione di Azure. È possibile eseguire i ripristini dai backup dei BLOB in blocchi o dei BLOB di pagine. Nell'esempio seguente il file di backup del database IronOreSilicaPrediction_2020_04_16.bak
in un BLOB in blocchi viene ripristinato per creare il database, IronOreSilicaPrediction_3
.
RESTORE DATABASE IronOreSilicaPrediction_3
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/IronOreSilicaPrediction_2020_04_16.bak'
WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.mdf',
MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.ldf',
STATS = 10;