SQL Server backup in URL per Microsoft Archiviazione BLOB di Azure
Si applica a: SQL Server Istanza gestita di SQL di Azure
Questo articolo presenta i concetti, i requisiti e i componenti necessari per l'uso di Microsoft Archiviazione BLOB di Azure come destinazione di backup. La funzionalità di backup e ripristino è uguale o simile a quella delle opzioni DISK e TAPE, con alcune differenze. Queste differenze e alcuni esempi di codice sono inclusi in questo articolo.
Panoramica
È importante comprendere i componenti e l'interazione tra di essi per eseguire un backup o ripristinare da Microsoft Archiviazione BLOB di Azure.
Il primo passo in questo processo consiste nella creazione di un account di Archiviazione di Azure nella sottoscrizione di Azure. Questo account di archiviazione è un account amministrativo con autorizzazioni amministrative complete per tutti i contenitori e gli oggetti creati con tale account. SQL Server può usare il nome dell'account di archiviazione di Azure e il relativo valore di chiave di accesso per autenticare e scrivere e leggere BLOB in Microsoft Archiviazione BLOB di Azure o usare un token di firma di accesso condiviso generato in contenitori specifici concedendole diritti di lettura e scrittura. Per altre informazioni sugli account di archiviazione di Azure, vedere Informazioni sugli account di archiviazione di Azure. Per altre informazioni sulle firme di accesso condiviso, vedere Firme di accesso condiviso, parte 1: informazioni sul modello di firma di accesso condiviso. Queste informazioni di autenticazione usate durante le operazioni di backup o ripristino vengono archiviate nelle credenziali di SQL Server.
Archiviazione di Azure e archiviazione compatibile con S3
SQL Server 2012 Service Pack 1 CU2 e SQL Server 2014 ha introdotto la possibilità di eseguire il backup in un URL che punta a Archiviazione BLOB di Azure, usando una sintassi T-SQL familiare per scrivere backup in modo sicuro nell'archiviazione di Azure. SQL Server 2016 (13.x) ha introdotto backup snapshot file per i file di database in Azure e sicurezza tramite chiavi sas (Shared Access Signature), un modo sicuro e semplice per autenticare i certificati ai criteri di sicurezza di Archiviazione di Azure. SQL Server 2022 (16.x) introduce la possibilità di scrivere backup nell'archivio oggetti compatibile con S3, con funzionalità di backup e ripristino concettualmente simili all'uso di Backup in URL usando Archiviazione BLOB di Azure come tipo di dispositivo di backup. SQL Server 2022 (16.x) estende la sintassi BACKUP/RESTORE TO/FROM URL aggiungendo il supporto per un nuovo connettore S3 usando l'API REST.
Questo articolo contiene informazioni sull'uso di Backup per URL per Archiviazione BLOB di Azure. Per altre informazioni sull'uso di Backup per URL per l'archiviazione compatibile con S3, vedere SQL Server backup e ripristino con l'archiviazione degli oggetti compatibile con S3.
Eseguire il backup nel BLOB di blocchi di Archiviazione di Azure e nel BLOB di pagine
Esistono due tipi di BLOB che possono essere archiviati in Microsoft Archiviazione BLOB di Azure: BLOB di blocchi e pagine. Per SQL Server 2016 e versioni successive, è preferibile il BLOB in blocchi.
se si usa la chiave di archiviazione nella credenziale, verrà usato un BLOB di pagine. Se si usa la firma di accesso condiviso, verrà usato un BLOB in blocchi.
Il backup in blocco BLOB è disponibile solo in SQL Server versione 2016 o successiva per il backup in Archiviazione BLOB di Azure. Eseguire il backup su BLOB in blocchi anziché su BLOB di pagine se si esegue SQL Server 2016 o versione successiva.
I motivi principali sono:
- La firma di accesso condiviso è un modo più sicuro per autorizzare l'accesso al BLOB rispetto alla chiave di archiviazione.
- È possibile eseguire il backup in più BLOB a blocchi per ottenere prestazioni di backup e ripristino migliori e supportare il backup di database più grande.
- BLOB in blocchi è più economico di BLOB di pagine.
- I clienti che devono eseguire il backup nei BLOB di pagine tramite un server proxy dovranno usare
backuptourl.exe
.
L'esecuzione di un backup di un database di grandi dimensioni in Archiviazione BLOB di Azure è soggetta alle limitazioni elencate in Istanza gestita di SQL di Azure differenze T-SQL, limitazioni e problemi noti.
Se le dimensioni del database sono troppo grandi, è possibile:
- Usare la compressione di backup o
- Eseguire il backup in più BLOB a blocchi
Supporto in Linux, contenitori e Istanza gestita di SQL abilitati per Azure Arc
Se l'istanza di SQL Server è ospitata in Linux, tra cui:
- Sistema operativo autonomo
- Contenitori
- Istanza gestita di SQL abilitata per Azure Arc
- Qualsiasi altro ambiente basato su Linux
L'unico backup supportato nell'URL per Archiviazione BLOB di Azure consiste nel bloccare i BLOB usando la firma di accesso condiviso.
Archiviazione BLOB di Microsoft Azure
Account di archiviazione: l'account di archiviazione è il punto di partenza per tutti i servizi di archiviazione. Per accedere a Microsoft Archiviazione BLOB di Azure, creare prima un account di archiviazione di Azure. Per altre informazioni, vedere la pagina relativa alla creazione degli account di archiviazione.
Contenitore: un contenitore offre un raggruppamento di un set di BLOB e può archiviare un numero illimitato di BLOB. Per scrivere un backup SQL Server in Archiviazione BLOB di Azure, è necessario creare almeno il contenitore radice. È possibile generare un token di firma di accesso condiviso in un contenitore e concedere l'accesso agli oggetti in un solo contenitore specifico.
BLOB: file di qualsiasi tipo e dimensioni. Esistono due tipi di BLOB che possono essere archiviati in Archiviazione BLOB di Azure: BLOB di blocchi e pagine. SQL Server backup può usare entrambi i tipi di BLOB a seconda della sintassi Transact-SQL usata. I BLOB sono indirizzabili usando il formato URL seguente: https:// storage account.blob.core.windows.net/<<> container>/<BLOB>. Per altre informazioni sulle Archiviazione BLOB di Azure, vedere Introduzione alla Archiviazione BLOB di Azure. Per altre informazioni sui BLOB di pagine e in blocco, vedere Informazioni sui Blob in blocchi, sui BLOB di aggiunta e sui BLOB di pagine.
Snapshot di Azure: uno snapshot di un BLOB di Azure acquisito in un momento preciso. Per altre informazioni, vedere Creazione di uno snapshot di un BLOB. SQL Server backup supporta ora backup snapshot di Azure dei file di database archiviati in Archiviazione BLOB di Azure. Per altre informazioni, vedere Backup di snapshot di file per i file di database in Azure.
Componenti di SQL Server
URL: un URL specifica un URI (Uniform Resource Identifier) in un file di backup univoco. L'URL viene usato per fornire il percorso e il nome del file di backup di SQL Server. L'URL deve puntare a un BLOB effettivo, non solo a un contenitore. Se il BLOB non è disponibile, viene creato. Se viene specificato un BLOB esistente, l'operazione di backup non viene completata a meno che non sia stata specificata l'opzione "WITH FORMAT" per sovrascrivere il file di backup esistente nel BLOB.
Ecco un valore URL di esempio: http[s]://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak
. Anche se non richiesto, è consigliabile utilizzare HTTPS.
Credenziali: Una credenziale SQL Server è un oggetto usato per archiviare le informazioni di autenticazione necessarie per connettersi a una risorsa all'esterno di SQL Server. In questo caso, SQL Server processi di backup e ripristino usano le credenziali per eseguire l'autenticazione per Archiviazione BLOB di Azure e i relativi oggetti BLOB e contenitori. Nelle credenziali sono archiviati il nome dell'account di archiviazione e i valori della chiave di accesso dell'account di archiviazione, o l'URL del contenitore e il relativo token di firma di accesso condiviso. Una volta create le credenziali, la sintassi delle istruzioni BACKUP/RESTORE determina il tipo di BLOB e le credenziali necessarie.
Per un esempio su come creare una firma di accesso condiviso, vedere Creare esempi di firma di accesso condiviso più avanti in questo articolo e creare una SQL Server credenziali, vedere Creare esempi di credenziali più avanti in questo articolo.
Per informazioni generali sulle credenziali, vedere Credenziali
Per informazioni su altri esempi in cui vengono usate le credenziali, vedere Creazione di un proxy di SQL Server Agent.
Sicurezza per Archiviazione BLOB di Azure
Di seguito sono riportate considerazioni sulla sicurezza e requisiti quando si esegue il backup o il ripristino da Archiviazione BLOB di Azure.
Quando si crea un contenitore per Archiviazione BLOB di Azure, è consigliabile impostare l'accesso a privato. In questo modo si limita l'accesso a utenti o account in grado di specificare le informazioni necessarie per l'autenticazione all'account di Azure.
Importante
SQL Server richiede che sia un nome dell'account di Azure che l'autenticazione della chiave di accesso o un token di accesso condiviso vengano archiviati in una SQL Server credenziali. Queste informazioni servono per eseguire l'autenticazione all'account di Azure per operazioni di backup o ripristino.
Avviso
Archiviazione di Azure supporta la disabilitazione dell'autorizzazione di chiave condivisa per un account di archiviazione. Se l'autorizzazione della chiave condivisa è disabilitata, SQL Server Backup in URL non funzionerà.
All'account utente usato per eseguire i comandi BACKUP o RESTORE deve essere associato il ruolo del database db_backup operator con autorizzazioni Modifica qualsiasi credenziale .
Limitazioni del backup/ripristino in Archiviazione BLOB di Azure
SQL Server limita le dimensioni massime di backup supportate usando un BLOB di pagine di 1 TB. Le dimensioni massime di backup supportate tramite BLOB a blocchi sono limitate a circa 200 GB (50.000 blocchi * 4 MB MAXTRANSFERSIZE). I BLOB in blocchi supportano lo striping per supportare dimensioni di backup notevolmente maggiori: il limite è un massimo di 64 URL, che comporta la formula seguente:
64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB
.Importante
Sebbene le dimensioni massime di backup supportate da un singolo BLOB a blocchi siano pari a 200 GB, è possibile SQL Server scrivere in dimensioni di blocchi più piccole, che possono portare SQL Server a raggiungere il limite di blocchi di 50.000 prima del trasferimento dell'intero backup. Eseguire lo striping dei backup (anche se sono più piccoli di 200 GB) per evitare il limite dei blocchi, soprattutto se si usano backup differenziali o non compressi.
È possibile eseguire istruzioni di backup o ripristino tramite TSQL, SMO, cmdlet PowerShell, SQL Server Management Studio Backup o Ripristino guidato.
La creazione di un nome di dispositivo logico non è supportata. Di conseguenza, non è supportata neanche l'aggiunta di un URL come dispositivo di backup tramite sp_dumpdevice o SQL Server Management Studio.
L'accodamento ai BLOB di backup esistenti non è supportato. I backup in un BLOB esistente possono essere sovrascritti solo tramite l'opzione WITH FORMAT . Quando si usano i backup con snapshot di file (usando l'argomento WITH FILE_SNAPSHOT ) tuttavia, l'argomento WITH FORMAT non è consentito per evitare di lasciare snapshot di file orfani creati con il backup con snapshot di file originale.
Il backup in più BLOB in un'unica operazione è supportato solo tramite i BLOB in blocchi e un token di firma di accesso condiviso, anziché con la chiave dell'account di archiviazione per le credenziali SQL.
L'impostazione di BLOCKSIZE non è supportata per i BLOB di pagine.
L'impostazione di MAXTRANSFERSIZE non è supportata per i BLOB di pagine.
La specifica delle opzioni del set di backup, RETAINDAYS ed EXPIREDATE , non è supportata.
In SQL Server è previsto un limite massimo di 259 caratteri per il nome di un dispositivo di backup. BACKUP TO URL utilizza 36 caratteri per gli elementi necessari usati per specificare l'URL (https://.blob.core.windows.net//.bak ) lasciando 223 caratteri per i nomi dell'account, del contenitore e del BLOB.
SQL Server versioni precedenti al 2022 hanno un limite di 256 caratteri per i token di firma di accesso condiviso (SAS), che limitano il tipo di token che possono essere usati (ad esempio, i token di chiave di delega utente non sono supportati).
Se il server accede ad Azure tramite un server proxy, è necessario usare il flag di traccia 1819 e quindi impostare la configurazione del proxy WinHTTP con uno dei metodi seguenti:
- L'utility proxycfg.exe in Windows XP o Windows Server 2003 e versioni precedenti.
- L'utility netsh.exe in Windows Vista e Windows Server 2008 o versioni successive.
L'archiviazione non modificabile per Archiviazione BLOB di Azure non è supportata. Impostare i criteri di archiviazione non modificabile su false.
Istruzioni di argomenti & supportati in Archiviazione BLOB di Azure
Supporto per istruzioni di backup/ripristino in Archiviazione BLOB di Azure
Istruzione di backup/ripristino | Supportato | Eccezioni | Commenti |
---|---|---|---|
BACKUP | S | BLOCKSIZE e MAXTRANSFERSIZE sono supportati per i BLOB in blocchi. Non sono supportati per i BLOB di pagine. | Per usare BACKUP per un BLOB in blocchi è necessaria una firma di accesso condiviso salvata in una credenziale di SQL Server. BACKUP nel BLOB di pagine richiede che la chiave dell'account di archiviazione salvata in una credenziale SQL Server e richieda che venga specificato l'argomento WITH CREDENTIAL. |
RESTORE | S | Richiede la definizione di una credenziale SQL Server e richiede che l'argomento WITH CREDENTIAL venga specificato se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
RESTORE FILELISTONLY | S | Richiede la definizione di una credenziale SQL Server e richiede che l'argomento WITH CREDENTIAL venga specificato se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
RESTORE HEADERONLY | S | Richiede la definizione di una credenziale SQL Server e richiede che l'argomento WITH CREDENTIAL venga specificato se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
RESTORE LABELONLY | S | Richiede la definizione di una credenziale SQL Server e richiede che l'argomento WITH CREDENTIAL venga specificato se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
RESTORE VERIFYONLY | S | Richiede la definizione di una credenziale SQL Server e richiede che l'argomento WITH CREDENTIAL venga specificato se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
RESTORE REWINDONLY | - |
Per la sintassi e informazioni generali sulle istruzioni di backup, vedere BACKUP (Transact-SQL).For syntax and general information about backup statements, see BACKUP (Transact-SQL).
Per la sintassi e informazioni generali sulle istruzioni di ripristino, vedere RESTORE (Transact-SQL).For syntax and general information about restore statements, see RESTORE (Transact-SQL).
Supporto per gli argomenti di backup in Archiviazione BLOB di Azure
Argomento | Supportato | Eccezione | Commenti |
---|---|---|---|
DATABASE | S | ||
LOG | S | ||
TO (URL) | S | Diversamente da DISK e TAPE, l'URL non supporta la specifica o la creazione di un nome logico. | Questo argomento viene utilizzato per specificare il percorso URL del file di backup. |
MIRROR TO | S | ||
OPZIONI WITH: | |||
CREDENTIAL | S | WITH CREDENTIAL è supportato solo quando si usa l'opzione BACKUP TO URL per eseguire il backup in Archiviazione BLOB di Azure e solo se la credenziale SQL Server viene definita usando la chiave dell'account di archiviazione come segreto | |
FILE_SNAPSHOT | S | ||
ENCRYPTION | S | Quando si specifica l'argomento WITH ENCRYPTION, SQL Server File-Snapshot Backup garantisce che l'intero database sia stato crittografato con TDE prima di eseguire il backup e, in tal caso, crittografa il file di backup dello snapshot di file usando l'algoritmo specificato per TDE nel database. Se tutti i dati nel database nell'intero database non sono crittografati, il backup avrà esito negativo, ad esempio il processo di crittografia non è ancora stato completato. | |
DIFFERENTIAL | S | ||
COPY_ONLY | S | ||
COMPRESSION|NO_COMPRESSION | S | Non supportato per il backup con snapshot di file | |
DESCRIZIONE | S | ||
NAME | S | ||
EXPIREDATE | RETAINDAYS | - | ||
NOINIT | INIT | - | L'accodamento ai BLOB non è consentito. Per sovrascrivere un backup, utilizzare l'argomento WITH FORMAT . Quando si usano i backup con snapshot di file (usando l'argomento WITH FILE_SNAPSHOT ) tuttavia, l'argomento WITH FORMAT non è consentito per evitare di lasciare snapshot di file orfani creati con il backup originale. | |
NOSKIP | SKIP | - | ||
NOFORMAT | FORMAT | S | Un backup eseguito in un BLOB esistente non viene completato a meno che non venga specificato WITH FORMAT . Il BLOB esistente viene sovrascritto quando viene specificato WITH FORMAT . Quando si usano i backup con snapshot di file (usando l'argomento WITH FILE_SNAPSHOT ) tuttavia, l'argomento FORMAT non è consentito per evitare di lasciare snapshot di file orfani creati con il backup con snapshot di file originale. Quando si usano i backup con snapshot di file (usando l'argomento WITH FILE_SNAPSHOT ) tuttavia, l'argomento WITH FORMAT non è consentito per evitare di lasciare snapshot di file orfani creati con il backup originale. | |
MEDIADESCRIPTION | S | ||
MEDIANAME | S | ||
BLOCKSIZE | S | Non supportati per i BLOB di pagine. Supportati per i BLOB in blocchi. | Si consiglia BLOCKSIZE=65536 per ottimizzare l'uso dei 50.000 blocchi consentiti in un BLOB in blocchi. |
BUFFERCOUNT | S | ||
MAXTRANSFERSIZE | S | Non supportati per i BLOB di pagine. Supportati per i BLOB in blocchi. | Il valore predefinito è 1048576. Il valore può arrivare fino a 4 MB con incrementi di 65536 byte. Si consiglia MAXTRANSFERSIZE=4194304 per ottimizzare l'uso dei 50.000 blocchi consentiti in un BLOB in blocchi. |
NO_CHECKSUM | CHECKSUM | S | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR | S | ||
STATS (Statistiche) | S | ||
REWIND | NOREWIND | - | ||
UNLOAD | NOUNLOAD | - | ||
NORECOVERY | STANDBY | S | ||
NO_TRUNCATE | S |
Per altre informazioni sugli argomenti di backup, vedere BACKUP (Transact-SQL).
Supporto per gli argomenti di ripristino in Archiviazione BLOB di Azure
Argomento | Supportato | Eccezioni | Commenti |
---|---|---|---|
DATABASE | S | ||
LOG | S | ||
FROM (URL) | S | L'argomento FROM URL viene utilizzato per specificare il percorso URL del file di backup. | |
WITH Options: | |||
CREDENTIAL | S | WITH CREDENTIAL è supportato solo quando si usa l'opzione RESTORE FROM URL per eseguire il ripristino da Microsoft Archiviazione BLOB di Azure. | |
PARTIAL | S | ||
RECOVERY | NORECOVERY | STANDBY | S | ||
LOADHISTORY | S | ||
MOVE | S | ||
REPLACE | S | ||
RESTART | S | ||
RESTRICTED_USER | S | ||
FILE | - | ||
PASSWORD | S | ||
MEDIANAME | S | ||
MEDIAPASSWORD | S | ||
BLOCKSIZE | S | ||
BUFFERCOUNT | - | ||
MAXTRANSFERSIZE | - | ||
CHECKSUM | NO_CHECKSUM | S | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR | S | ||
FILESTREAM | S | Non supportato per il backup con snapshot di file | |
STATS (Statistiche) | S | ||
REWIND | NOREWIND | - | ||
UNLOAD | NOUNLOAD | - | ||
KEEP_REPLICATION | S | ||
KEEP_CDC | S | ||
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER | S | ||
STOPAT | STOPATMARK | STOPBEFOREMARK | S |
Per altre informazioni sugli argomenti Restore, vedere Argomenti RESTORE (Transact-SQL).For more information about Restore arguments, see RESTORE Arguments (Transact-SQL).
Eseguire il backup con SSMS
È possibile eseguire il backup di un database in un URL tramite l'attività di backup in SQL Server Management Studio e credenziali SQL Server.
Nota
Per creare un backup di snapshot di file SQL Server o sovrascrivere un set di supporti esistente, è necessario usare Transact-SQL, Powershell o C# anziché l'attività Backup in SQL Server Management Studio.
Nei passaggi seguenti vengono descritte le modifiche apportate all'attività di backup di database in SQL Server Management Studio per consentire il backup nel servizio di archiviazione di Azure:
In Esplora oggetticonnettersi a un'istanza del motore di database di SQL Server e, successivamente, espanderla.
Espandere Database, fare clic con il pulsante destro del mouse sul database desiderato, scegliere Attività e quindi selezionare Backup.
Nella pagina Generale nella sezione Destinazione è disponibile l'opzione URL nell'elenco a discesa Backup in: . L'opzione URL è usata per creare un backup nel servizio di archiviazione Microsoft Azure. Selezionare Aggiungi e verrà visualizzata la finestra di dialogo Seleziona destinazione di backup :
Contenitore di archiviazione di Azure: Nome del contenitore di archiviazione di Microsoft Azure in cui archiviare i file di backup. Selezionare un contenitore esistente nell'elenco a discesa o immetterlo manualmente.
Criteri di accesso condiviso: Immettere la firma di accesso condiviso per un contenitore immesso manualmente. Questo campo non è disponibile se è stato scelto un contenitore esistente.
File di backup: nome del file di backup.
Nuovo contenitore: Usato per registrare un contenitore esistente per il quale non si ha una firma di accesso condiviso. Vedere Connettersi a una sottoscrizione di Microsoft Azure.
Nota
Aggiungi supporta più file di backup e i contenitori di archiviazione per un singolo set di supporti.
Quando si seleziona un URL come destinazione, alcune opzioni nella pagina Opzioni supporti vengono disabilitate. Gli articoli seguenti contengono altre informazioni sulla finestra di dialogo Backup database:
Eseguire il backup con un piano di manutenzione
Analogamente all'attività di backup descritta in precedenza, la Creazione guidata piano di manutenzione in SQL Server Management Studio include l'URL come una delle opzioni di destinazione e altri oggetti di supporto necessari per eseguire il backup nell'archiviazione di Azure, ad esempio le credenziali SQL. Per altre informazioni, vedere la sezione sulla definizione delle attività di backup in Using Maintenance Plan Wizard.
Nota
Per creare un set di backup con striping, un backup di file-snapshot SQL Server o una credenziale SQL usando il token di accesso condiviso, è necessario usare Transact-SQL, PowerShell o C# anziché l'attività Backup nella Creazione guidata piano di manutenzione.
Eseguire il ripristino con SSMS
L'attività Ripristina database include URL come dispositivo da cui eseguire il ripristino. I passaggi seguenti descrivono l'uso dell'attività Restore per ripristinare da Archiviazione BLOB di Azure:
Fare clic con il pulsante destro del mouse su Database e scegliere Ripristina database.... .
Nella pagina Generale selezionare Dispositivo nella sezione Origine .
Selezionare il pulsante sfoglia (...) per aprire la finestra di dialogo Seleziona dispositivi di backup .
Selezionare URL dall'elenco a discesa Tipo di supporti di backup: . Selezionare Aggiungi per aprire la finestra di dialogo Seleziona percorso file di backup .
Contenitore di archiviazione di Azure: Nome completo del contenitore di archiviazione di Microsoft Azure contenente i file di backup. Selezionare un contenitore esistente nell'elenco a discesa o immettere manualmente il nome completo del contenitore.
Firma di accesso condiviso: Usato per immettere la firma di accesso condiviso per il contenitore designato.
Aggiungere: Usato per registrare un contenitore esistente per cui non è disponibile una firma di accesso condiviso. Vedere Connettersi a una sottoscrizione di Microsoft Azure.
OK: SQL Server si connette all'archiviazione di Microsoft Azure usando le informazioni sulle credenziali SQL fornite e apre la finestra di dialogo Individua file di backup in Microsoft Azure. In questa pagina vengono visualizzati i file di backup che si trovano nel contenitore di archiviazione. Selezionare il file da usare per ripristinare e selezionare OK. In questo modo si torna alla finestra di dialogo Seleziona dispositivi di backup e selezionando OK in questa finestra di dialogo si torna alla finestra di dialogo Ripristino principale in cui sarà possibile completare il ripristino.
Ripristina database (pagina Generale)
Esempi di codice
In questa sezione sono disponibili gli esempi riportati di seguito.
Nota
Per un'esercitazione sull'uso di SQL Server 2016 con Archiviazione BLOB di Azure, vedere Esercitazione: Usare Archiviazione BLOB di Azure con i database SQL Server
Creare una firma di accesso condiviso
Nell'esempio seguente vengono create firme di accesso condiviso che possono essere usate per creare una SQL Server credenziali in un contenitore appena creato. Questo 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.
Nota
Questo esempio richiede Microsoft Azure PowerShell. Per altre informazioni sull'installazione e l'uso di PowerShell, vedere Come installare e configurare Azure PowerShell.
Questi script sono stati verificati con Azure PowerShell 5.1.15063.
Firma di accesso condiviso associata a un criterio di accesso archiviato
# Define global variables for the script
$prefixName = '<a prefix name>' # used as the prefix for the name for various objects
$subscriptionName='<your subscription name>' # the name of subscription name you will use
$locationName = '<a data center location>' # the data center region you will use
$storageAccountName= $prefixName + 'storage' # the storage account name you will create or use
$containerName= $prefixName + 'container' # the storage container name to which you will attach the SAS policy with its SAS token
$policyName = $prefixName + 'policy' # the name of the SAS policy
# Set a variable for the name of the resource group you will create or use
$resourceGroupName=$prefixName + 'rg'
# adds an authenticated Azure account for use in the session
Connect-AzAccount
# set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionName $subscriptionName
# create a new resource group - comment out this line to use an existing resource group
New-AzResourceGroup -Name $resourceGroupName -Location $locationName
# Create a new ARM storage account - comment out this line to use an existing ARM storage account
New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName
# Get the access keys for the ARM storage account
$accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
# Create a new storage account context using an ARM storage account
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].value
# Creates a new container in Azure Blob Storage
$container = New-AzStorageContainer -Context $storageContext -Name $containerName
$cbc = $container.CloudBlobContainer
# Sets up a Stored Access Policy and a Shared Access Signature for the new container
$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.Uri,$sas.Substring(1)
$tSql | clip
Write-Host $tSql
Dopo aver eseguito correttamente lo script, copiare il CREATE CREDENTIAL
comando in uno strumento di query, connettersi a un'istanza di SQL Server ed eseguire il comando per creare le credenziali con la firma di accesso condiviso.
Creare una credenziale
Negli esempi seguenti vengono create SQL Server credenziali per l'autenticazione in Archiviazione BLOB di Azure. riportate di seguito.
Uso della firma di accesso condiviso
Se è stato eseguito lo script precedente per creare la firma di accesso condiviso, copiare l'oggetto
CREATE CREDENTIAL
in un editor di query connesso all'istanza di SQL Server ed eseguire il comando.Il codice T-SQL seguente è un esempio che crea le credenziali per l'uso di una firma di accesso condiviso.
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>';
Uso della chiave di identità e di accesso dell'account di archiviazione
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = '<mycredentialname>') CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>' ,SECRET = '<mystorageaccountaccesskey>';
Eseguire un backup completo del database
Negli esempi seguenti viene eseguito un backup completo del AdventureWorks2016
database in Archiviazione BLOB di Azure. Usare uno degli esempi seguenti:
Nell'URL tramite una firma di accesso condiviso
BACKUP DATABASE AdventureWorks2016 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016.bak'; GO
Nell'URL tramite la chiave di identità e di accesso dell'account di archiviazione
BACKUP DATABASE AdventureWorks2016 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016.bak' WITH CREDENTIAL = '<mycredentialname>' ,COMPRESSION ,STATS = 5; GO
Eseguire il ripristino in un momento in cui si usa STOPAT
Nell'esempio seguente viene ripristinato lo stato del AdventureWorks2016
database di esempio in un momento e viene visualizzata un'operazione di ripristino.
Dall'URL tramite una firma di accesso condiviso
RESTORE DATABASE AdventureWorks2016 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016_2015_05_18_16_00_00.bak'
WITH MOVE 'AdventureWorks2016_data' to 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2016.mdf'
,MOVE 'AdventureWorks2016_log' to 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2016.ldf'
,NORECOVERY
,REPLACE
,STATS = 5;
GO
RESTORE LOG AdventureWorks2016 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2016_2015_05_18_18_00_00.trn'
WITH
RECOVERY
,STOPAT = 'May 18, 2015 5:35 PM'
GO