Backup di SQL Server nell’URL per Archiviazione BLOB di Microsoft Azure
Si applica a: SQL Server Istanza gestita di SQL di Azure
Questo articolo illustra i concetti, i requisiti e i componenti necessari per usare Archiviazione BLOB di Microsoft Azure come destinazione backup. La funzionalità di backup e ripristino è uguale o simile a quella delle opzioni DISK e TAPE, con alcune differenze. Nell'articolo sono descritte le differenze e sono inclusi alcuni esempi di codice.
Panoramica
È importante comprendere i componenti e la loro interazione per eseguire operazioni di backup o ripristino in Archiviazione BLOB di Microsoft 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 valore della relativa chiave di accesso per autenticare, scrivere e leggere i BLOB in Archiviazione BLOB di Microsoft Azure, oppure può usare un token di firma di accesso condiviso generato per contenitori specifici che conceda 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: conoscere il 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 hanno introdotto la possibilità di eseguire il backup in un URL a cui punta Archiviazione BLOB di Azure, usando una sintassi T-SQL familiare per scrivere i backup in modo sicuro nell'archiviazione di Azure. SQL Server 2016 (13.x) ha introdotto i backup di snapshot di file per i file di database in Azure e la sicurezza tramite chiavi di firma di accesso condiviso (SAS), un modo sicuro e semplice per autenticare i certificati per i criteri di sicurezza di Archiviazione di Azure. SQL Server 2022 (16.x) introduce la possibilità di scrivere backup in un archivio oggetti compatibile con S3, con funzionalità di backup e ripristino concettualmente simili all'uso del backup nell’URL usando Archiviazione BLOB di Azure come tipo di dispositivo di backup. SQL Server 2022 (16.x) estende la sintassi di BACKUP/RESTORE TO/FROM URL aggiungendo il supporto per un nuovo connettore S3 tramite l'API REST.
Questo articolo contiene informazioni sull'uso di Backup su URL per Archiviazione BLOB di Azure. Per altre informazioni sull'uso del backup nell'URL per l'archiviazione compatibile con S3, vedere Backup e ripristino di SQL Server con archiviazione oggetti compatibile con S3.
Eseguire il backup su BLOB in blocchi o BLOB di pagine di Archiviazione di Azure
Esistono due tipi di BLOB che è possibile archiviare in Archiviazione BLOB di Microsoft Azure: BLOB in blocchi e di 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 su BLOB in blocchi è disponibile solo in SQL Server 2016 o versioni successive, 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 su più BLOB in blocchi per ottenere prestazioni di backup e ripristino superiori e supportare il backup di database più grandi.
- 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 del backup di un database di grandi dimensioni nell'archiviazione BLOB di Azure è soggetta alle limitazioni elencate in Differenze, limitazioni e problemi noti di T-SQL in Istanza gestita di SQL Azure.
Se le dimensioni del database sono troppo grandi, è possibile:
- Usare la compressione del backup oppure
- Eseguire il backup su più BLOB in blocchi
Supporto in Linux, in contenitori e in Istanza gestita di SQL abilitata per Azure Arc
Se l'istanza di SQL Server è ospitata in Linux, tra cui:
- Sistema operativo autonomo
- Contenitori
- Istanza gestita di SQL con abilitazione di Azure Arc
- Qualsiasi altro ambiente basato su Linux
L'unico backup su URL per Archiviazione BLOB di Azure supportato è in BLOB in blocchi, usando la firma di accesso condiviso.
Archivio BLOB di Microsoft Azure
Account di archiviazione: questo account è il punto di partenza per tutti i servizi di archiviazione. Per accedere ad Archiviazione BLOB di Microsoft 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 raggruppa un set di BLOB e può archiviare un numero illimitato di BLOB. Per scrivere un backup di SQL Server in Archiviazione BLOB di Azure, deve prima essere stato creato 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 dimensione. Esistono due tipi di oggetti BLOB che è possibile archiviare in Archiviazione BLOB di Azure: BLOB in blocchi e BLOB di pagine. Il backup di SQL Server può usare uno dei due tipi di BLOB, a seconda della sintassi Transact-SQL usata. I BLOB sono indirizzabili tramite questo formato di URL: https://<account di archiviazione>.blob.core.windows.net/<contenitore>/<blob>. Per altre informazioni su Archiviazione BLOB di Azure, vedere Introduzione a 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 ora supporta i backup di Azure degli snapshot 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: tramite un URL viene specificato 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.
Di seguito è riportato un valore URL di esempio: https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak
.
Nota
Il backup su URL tramite HTTP NON è supportato.
Credenziale: una credenziale di SQL Server è un oggetto utilizzato per archiviare le informazioni di autenticazione necessarie per connettersi a una risorsa all'esterno di SQL Server. In questo caso, nei processi di backup e ripristino di SQL Server vengono usate le credenziali per l'autenticazione a Archiviazione BLOB di Azure, nonché ai contenitori e agli oggetti dei BLOB relativi. 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 di come creare una firma di accesso condiviso, vedere gli esempi in Creare una firma di accesso condiviso più avanti in questo articolo e per creare le credenziali di SQL Server, vedere gli esempi in Creare 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 riportati requisiti e considerazioni sulla sicurezza per l'esecuzione del backup o del ripristino in Archiviazione BLOB di Azure.
Quando si crea un contenitore per Archiviazione BLOB di Azure, è consigliabile impostare l'accesso su 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
Per SQL Server è necessario un nome account e l'autenticazione della chiave di accesso di Azure, oppure una firma di accesso condiviso e un token di accesso archiviati nelle credenziali di SQL Server. 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 con chiave condivisa per un account di archiviazione. Se l'autorizzazione con chiave condivisa è disabilitata, il backup di SQL Server nell'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 di backup e ripristino in Archiviazione BLOB di Azure
SQL Server limita le dimensioni massime di backup supportate usando un BLOB di pagine di 1 TB. La dimensione massima del backup supportata con BLOB in blocchi è limitata 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
Anche se le dimensioni massime di backup supportate da un singolo BLOB in blocchi sono di 200 GB, è possibile che SQL Server scriva in dimensioni di blocchi più piccole e ciò può causare il raggiungimento del limite di 50.000 blocchi in SQL Server 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 Transact-SQL, SMO, cmdlet PowerShell, SQL Server Management Studio Backup o Ripristino guidato.
L’account di backup in Archiviazione di Azure supporta solo l'autenticazione con token di firma di accesso condiviso o chiavi dell'account di archiviazione. Tutti gli altri metodi di autenticazione, inclusa l'autenticazione con Microsoft Entra ID (in precedenza Azure Active Directory), non sono supportati.
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.
Le versioni di SQL Server precedenti al 2022 hanno un limite di 256 caratteri per i token di firma di accesso condiviso, il che limiterà il tipo di token che possono essere usati (ad esempio, i token della 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 l'archiviazione BLOB di Azure non è supportata. Impostare i criteri di archiviazione non modificabile su false.
Argomenti e istruzioni supportati in Archiviazione BLOB di Azure
Supporto per istruzioni di backup/ripristino in Archiviazione BLOB di Azure
Istruzione di backup/ripristino | Supportata | Eccezioni | Commenti |
---|---|---|---|
BACKUP | Y | 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. Per usare BACKUP per un BLOB di pagine è necessaria la chiave dell'account di archiviazione salvata in una credenziale di SQL Server e occorre che sia specificato l'argomento WITH CREDENTIAL. |
RESTORE | Y | Richiede che siano state definite credenziali SQL Server nelle quali venga specificato l'argomento WITH CREDENTIAL se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
RESTORE FILELISTONLY | Y | Richiede che siano state definite credenziali SQL Server nelle quali venga specificato l'argomento WITH CREDENTIAL se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
RESTORE HEADERONLY | Y | Richiede che siano state definite credenziali SQL Server nelle quali venga specificato l'argomento WITH CREDENTIAL se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
RESTORE LABELONLY | Y | Richiede che siano state definite credenziali SQL Server nelle quali venga specificato l'argomento WITH CREDENTIAL se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
RESTORE VERIFYONLY | Y | Richiede che siano state definite credenziali SQL Server nelle quali venga specificato l'argomento WITH CREDENTIAL se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
RESTORE REWINDONLY | - |
Per la sintassi e informazioni generali sulle istruzioni di backup, vedere BACKUP (Transact-SQL).
Per la sintassi e informazioni generali sulle istruzioni di ripristino, vedere RESTORE (Transact-SQL).
Supporto per gli argomenti di backup in Archiviazione BLOB di Azure
Argomento | Supportata | Eccezione | Commenti |
---|---|---|---|
DATABASE | Y | ||
LOG | Y | ||
TO (URL) | Y | 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 | Y | ||
OPZIONI WITH: | |||
CREDENTIAL | Y | WITH CREDENTIAL è supportato solo quando si usa l'opzione BACKUP TO URL per il backup in Archiviazione BLOB di Azure e solo se le credenziali SQL Server sono state definite tramite la chiave dell'account di archiviazione come segreto | |
FILE_SNAPSHOT | Y | ||
ENCRYPTION | Y | Quando è specificato l'argomento WITH ENCRYPTION, il backup con snapshot di file di SQL Server verifica che l'intero database sia stato crittografato con TDE prima dell'esecuzione del backup e, in caso affermativo, crittografa il file di backup con snapshot di file stesso usando l'algoritmo specificato per TDE sul database. Se tutti i dati del database, in tutto il database, non sono stati crittografati, il backup non verrà completato (ad esempio, se il processo di crittografia non è ancora stato completato). | |
DIFFERENTIAL | Y | ||
COPY_ONLY | Y | ||
COMPRESSION|NO_COMPRESSION | Y | Non supportato per il backup con snapshot di file | |
DESCRIZIONE | Y | ||
NOME | Y | ||
EXPIREDATE | RETAINDAYS | - | ||
NOINIT | INIT | - | L'accodamento ai BLOB non è consentito. Per sovrascrivere un backup, usare 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 | Y | 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 | Y | ||
MEDIANAME | Y | ||
BLOCKSIZE | Y | 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 | Y | ||
MAXTRANSFERSIZE | Y | 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 | Y | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR | Y | ||
STATS (Statistiche) | Y | ||
REWIND | NOREWIND | - | ||
UNLOAD | NOUNLOAD | - | ||
NORECOVERY | STANDBY | Y | ||
NO_TRUNCATE | Y |
Per altre informazioni sugli argomenti di backup, vedere BACKUP (Transact-SQL).
Supporto per gli argomenti di ripristino in Archiviazione BLOB di Azure
Argomento | Supportata | Eccezioni | Commenti |
---|---|---|---|
DATABASE | Y | ||
LOG | Y | ||
FROM (URL) | Y | L'argomento FROM URL viene utilizzato per specificare il percorso URL del file di backup. | |
WITH Options: | |||
CREDENTIAL | Y | WITH CREDENTIAL è supportato solo quando si usa l'opzione RESTORE FROM URL per eseguire il ripristino da Archiviazione BLOB di Microsoft Azure. | |
PARTIAL | Y | ||
RECOVERY | NORECOVERY | STANDBY | Y | ||
LOADHISTORY | Y | ||
MOVE | Y | ||
REPLACE | Y | ||
RESTART | Y | ||
RESTRICTED_USER | Y | ||
FILE | - | ||
PASSWORD | Y | ||
MEDIANAME | Y | ||
MEDIAPASSWORD | Y | ||
BLOCKSIZE | Y | ||
BUFFERCOUNT | - | ||
MAXTRANSFERSIZE | - | ||
CHECKSUM | NO_CHECKSUM | Y | ||
STOP_ON_ERROR | CONTINUE_AFTER_ERROR | Y | ||
FILESTREAM | Y | Non supportato per il backup con snapshot di file | |
STATS (Statistiche) | Y | ||
REWIND | NOREWIND | - | ||
UNLOAD | NOUNLOAD | - | ||
KEEP_REPLICATION | Y | ||
KEEP_CDC | Y | ||
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER | Y | ||
STOPAT | STOPATMARK | STOPBEFOREMARK | Y |
Per altre informazioni sugli argomenti di ripristino, vedere Argomenti dell'istruzione RESTORE (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 con snapshot di file di SQL Server o sovrascrivere un set di supporti esistente, è necessario usare Transact-SQL, PowerShell o C# anziché l'attività di 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à, quindi selezionare Copia database.
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. Verrà aperta la finestra di dialogo Selezionare la destinazione di backup:
Contenitore di Archiviazione di Azure: nome del contenitore del servizio di archiviazione 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. Negli articoli seguenti vengono fornite ulteriori 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 nel servizio di 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 con snapshot di file di SQL Server o credenziali SQL tramite un token di accesso condiviso, è necessario usare Transact-SQL, PowerShell o C# anziché l'attività di backup in 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 come usare l'attività di ripristino per eseguire il ripristino 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: . Fare clic su Aggiungi per aprire la finestra di dialogo Selezionare un percorso del file di backup.
Contenitore di Archiviazione di Azure: nome completo del contenitore del servizio di archiviazione Microsoft Azure che contiene i file di backup. Selezionare un contenitore esistente nell'elenco a discesa o immettere manualmente il nome completo del contenitore.
Firma di accesso condiviso: usata per immettere la firma di accesso condiviso per il contenitore designato.
Aggiungi: 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.
OK: SQL Server si connette al servizio di archiviazione Microsoft Azure tramite le credenziali SQL specificate e apre la finestra di dialogo Trova 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 che si desidera ripristinare, quindi selezionare OK. Viene visualizzata di nuovo la finestra di dialogo Seleziona dispositivi di backup. Se si seleziona OK in questa finestra di dialogo, viene visualizzata di nuovo la finestra di dialogo principale Ripristina 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 Tutorial: Use Azure Blob Storage with SQL Server databases (Esercitazione: Uso di Archiviazione BLOB di Azure con i database di SQL Server)
Creare una firma di accesso condiviso
Nell'esempio seguente vengono create firme di accesso condiviso che possono essere usate per creare credenziali di SQL Server in un nuovo contenitore. 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: conoscere il 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.TrimStart('?'))''
# 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.TrimStart('?')
$tSql | clip
Write-Host $tSql
Dopo aver completato l'esecuzione dello script, copiare il comando CREATE CREDENTIAL
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.
Crea le credenziali
Nei seguenti esempi vengono create le credenziali di SQL Server per l'autenticazione a Archiviazione BLOB di Azure. Effettuare una delle operazioni seguenti.
Uso della firma di accesso condiviso
Se si è eseguito lo script precedente per creare la firma di accesso condiviso, copiare il comando
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
L'esempio seguente esegue un backup completo del database di AdventureWorks2022
in Archiviazione BLOB di Azure. Usare uno degli esempi seguenti:
Nell'URL tramite una firma di accesso condiviso
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'; GO
Nell'URL tramite la chiave di identità e di accesso dell'account di archiviazione
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak' WITH CREDENTIAL = '<mycredentialname>' ,COMPRESSION ,STATS = 5; GO
Ripristino temporizzato tramite STOPAT
Nell'esempio seguente viene ripristinato lo stato di un database di esempio AdventureWorks2022
in un momento preciso e viene illustrata l'operazione di ripristino.
Dall'URL tramite una firma di accesso condiviso
RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.bak'
WITH MOVE 'AdventureWorks2022_data' to 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.mdf'
,MOVE 'AdventureWorks2022_log' to 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.ldf'
,NORECOVERY
,REPLACE
,STATS = 5;
GO
RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'
WITH
RECOVERY
,STOPAT = 'May 18, 2015 5:35 PM'
GO