Esplorare il backup di SQL Server in un URL (Archiviazione di Azure)

Completato

Il primo passo in questo processo consiste nella creazione di un account di Archiviazione di Azure nella sottoscrizione di Azure. SQL Server può usare il nome account di archiviazione di Azure e il relativo valore della chiave di accesso per eseguire l'autenticazione, scrivere e leggere i BLOB nel servizio Archiviazione BLOB di Microsoft Azure oppure usare un token di firma di accesso condiviso che concede autorizzazioni di lettura e scrittura ai singoli contenitori. Queste informazioni di autenticazione usate durante le operazioni di backup o ripristino vengono archiviate nelle credenziali di SQL Server.

Per implementare il backup di SQL Server in un URL, è possibile usare le modalità seguenti:

  • Attività di backup in SQL Server Management Studio: è possibile eseguire il backup di un database in un URL tramite l'attività di backup in SQL Server Management Studio usando le credenziali di SQL Server.
  • Backup di SQL Server in un URL usando la creazione guidata Piano di manutenzione: 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 come le credenziali SQL.
  • Transact-SQL, PowerShell o C#: queste opzioni devono essere usate per creare un set di backup con striping, un backup di snapshot di file di SQL Server o credenziali SQL tramite un token di accesso condiviso.

Backup automatico v2 di SQL Server nelle macchine virtuali di Azure

Backup automatico v2 configura automaticamente il backup gestito in Microsoft Azure per tutti i database nuovi ed esistenti in una macchina virtuale di Azure con SQL Server 2016/2017 Standard, Enterprise o Developer in esecuzione. In questo modo è possibile configurare i backup periodici del database che utilizzano l'archiviazione BLOB di Azure. Il backup automatico v2 dipende dall'estensione SQL Server IaaS Agent.

Backup automatico v2 funziona con SQL Server 2016 o versioni successive. Se si usa SQL Server 2014, è possibile utilizzare Backup automatico v1 per eseguire il backup dei database.

Configurazione del database

  • I database di destinazione devono usare il modello di recupero con registrazione completa. Per altre informazioni sull'impatto del modello di recupero con registrazione completa sui backup, vedere Backup con il modello di recupero con registrazione completa.
  • I database di sistema non devono necessariamente usare un modello di recupero con registrazione completa. Se tuttavia è necessario effettuare il backup del log per Model o MSDB, deve essere usato il modello di recupero con registrazione completa.
  • I database di destinazione devono trovarsi nell'istanza di SQL Server predefinita oppure in un'istanza denominata installata seguendo la procedura descritta in Domande frequenti per SQL Server nelle macchine virtuali di Azure.

È possibile usare il portale di Azure o il modulo Az PowerShell per configurare Backup automatico v2 durante il provisioning o per le macchine virtuali di SQL Server 2016/2017 esistenti.

Backup di SQL Server in macchine virtuali di Azure (nell'insieme di credenziali di Servizi di ripristino)

Il backup di SQL Server nelle macchine virtuali di Azure può essere configurato nel portale di Azure o in PowerShell (non è disponibile alcun supporto per l'interfaccia della riga di comando di Azure). Il processo prevede l'esecuzione dell'individuazione delle istanze di SQL Server e dei relativi database da un insieme di credenziali di Servizi di ripristino di Azure, la selezione dei database di cui eseguire il backup nei risultati dell'individuazione e l'assegnazione di criteri di backup che determinano le impostazioni di backup come la frequenza e la conservazione. È anche possibile abilitare la protezione automatica, che esegue automaticamente il backup di tutti i database esistenti e futuri in un'istanza di SQL Server o in un gruppo di disponibilità Always On.

Quando si esegue l'individuazione in SQL Server, Backup di Azure esegue le operazioni seguenti:

  • Aggiunge l'estensione AzureBackupWindowsWorkload.
  • Crea un account NT SERVICE\AzureWLBackupPluginSvc per individuare i database nella macchina virtuale. Questo account viene usato per il backup e il ripristino e richiede le autorizzazioni di amministratore di sistema SQL.
  • Individua i database in esecuzione in una macchina virtuale. Backup di Azure usa l'account NT AUTHORITY\SYSTEM. Questo account deve essere un account di accesso pubblico in SQL.

Se non è stata creata la macchina virtuale di SQL Server usando un'immagine di Azure Marketplace, è necessario assegnare all'account NT SERVICE\AzureWLBackupPluginSvc il ruolo sysadmin.

Backup di SQL Server basati su snapshot di file in Archiviazione di Azure

Il backup con snapshot di file di SQL Server usa gli snapshot di Azure per offrire backup quasi istantanei e ripristini più veloci per i file di database archiviati usando il servizio di archiviazione BLOB di Azure. Questa funzionalità consente di semplificare i criteri di backup e ripristino.

È possibile usare gli script di Azure PowerShell e le query SQL per implementare i file di dati di SQL Server come BLOB di Azure. Usando gli script, è possibile creare facilmente un database in SQL Server in esecuzione in locale o in una macchina virtuale in Azure e configurare una posizione di archiviazione dedicata per i dati in Archiviazione BLOB di Azure. È anche possibile usare il portale di Azure anziché gli script di PowerShell.

Indipendentemente dalla scelta del metodo di implementazione, il processo prevede la configurazione di un account di archiviazione, la creazione di credenziali di SQL Server e la creazione di un database con i file archiviati nei BLOB. SQL Server richiede le credenziali per archiviare le informazioni di sicurezza che usa per scrivere e leggere dal contenitore BLOB di Azure.

Manutenzione di set di backup di file

  • Eliminazione di un set di backup di snapshot di file: non è possibile sovrascrivere un set di backup di snapshot di file usando l'argomento FORMAT. L'argomento FORMAT non è consentito per evitare di lasciare orfani snapshot di file che erano stati creati con il backup di snapshot di file originale. Per eliminare un set di backup di snapshot di file, usare la stored procedure di sistema sys.sp_delete_backup . Questa stored procedure elimina il file di backup e gli snapshot di file che costituiscono il set di backup. L'uso di un altro metodo per eliminare un set di backup di snapshot di file potrebbe eliminare il file di backup senza eliminare gli snapshot di file nel set di backup.
  • Eliminazione di snapshot di file di backup orfani: Se il file di backup è stato eliminato senza usare la stored procedure di sistema sys.sp_delete_backup o se un database o un file di database è stato eliminato mentre ai BLOB che lo contenevano erano associati snapshot di file di backup, è possibile che siano rimasti snapshot di alcuni file orfani. Per identificare gli snapshot di file che potrebbero essere orfani, usa la funzione di sistema sys.fn_db_backup_file_snapshots per elencare tutti gli snapshot di file dei file di database. Per identificare gli snapshot di file che fanno parte di un set di backup di snapshot di file specifico, usare la stored procedure di sistema RESTORE FILELISTONLY. È quindi possibile usare la stored procedure di sistema sys.sp_delete_backup_file_snapshot per eliminare un singolo snapshot di file di backup rimasto orfano. Alcuni esempi che usano questa funzione di sistema e queste stored procedure di sistema sono disponibili in fondo a questa pagina.

Eseguire il ripristino con i backup di snapshot di file

Ogni set di backup di snapshot di file contiene uno snapshot di file di ogni file di database, quindi un processo di ripristino richiede al massimo due set di backup di snapshot di file adiacenti. Questo vale indipendentemente dal fatto che il set di backup provenga da un backup di database completo o da un backup del log. Si tratta di un processo diverso rispetto al ripristino eseguito con i file di backup di flusso tradizionale. Con il backup di flusso tradizionale il processo di ripristino richiede l'uso di un'intera catena dei set di backup: il backup completo, un backup differenziale e uno o più backup del log delle transazioni. La parte di recupero del processo di ripristino rimane invariata indipendentemente dal fatto che il ripristino usi un backup di snapshot di file o un set di backup di flusso.

Per eseguire un'operazione RESTORE DATABASE per ripristinare un database all'ora di un set di backup di snapshot di file specifico, è necessario solo il set di backup specifico, oltre ai BLOB di base stessi. Considerato che è possibile usare un set di backup di snapshot di file del log delle transazioni per eseguire un'operazione RESTORE DATABASE, in genere si usa un set di backup del log delle transazioni per eseguire questo tipo di operazione e solo raramente si usa un set di backup di database completo.

Per eseguire un'operazione RESTORE DATABASE per ripristinare un database a uno specifico punto nel tempo che intercorre tra l'ora di due set di backup del log delle transazioni adiacenti, sono necessari solo due set di backup del log delle transazioni (prima e dopo il punto nel tempo per cui si vuole ripristinare il database). A tale scopo, eseguire un'operazione RESTORE DATABASE WITH NORECOVERY usando il set di backup di snapshot di file del log transazionale del precedente punto nel tempo ed eseguire un'operazione RESTORE LOG WITH RECOVERY usando il set di backup di snapshot di file del log delle transazioni del successivo punto nel tempo e usando l'argomento STOPAT per specificare il punto nel tempo in cui interrompere il recupero dal backup del log delle transazioni.

Backup del database e del log usando un backup di snapshot di file

L'esempio seguente usa il backup di snapshot di file per eseguire il backup del database di esempio AdventureWorks2016 su URL.

BACKUP DATABASE AdventureWorks2016

TO URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016.bak'

WITH FILE_SNAPSHOT ;

Eseguire il ripristino da un backup di snapshot di file SQL Server

L'esempio seguente ripristina il database AdventureWorks2016 usando un set di backup di snapshot di file del log delle transazioni e illustra un'operazione di ripristino. Si noti che è possibile ripristinare un database da un singolo set di backup di snapshot di file del log transazionale.

RESTORE DATABASE AdventureWorks2016 FROM URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016_2015_05_18_16_00_00.trn'

WITH RECOVERY, REPLACE ;

Eseguire il ripristino da un backup di snapshot di file SQL Server in un punto specifico del tempo

L'esempio seguente ripristina AdventureWorks2016 allo stato in cui si trovava in un punto nel tempo specificato usando due set di backup di snapshot di file del log delle transazioni e illustra un'operazione di ripristino.

RESTORE DATABASE AdventureWorks2016 FROM URL = 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016_2015_05_18_16_00_00.trn'

WITH NORECOVERY,REPLACE ;

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' ;

Eliminare un set di backup di snapshot di file di database

Per eliminare un set di backup di snapshot di file, usare la stored procedure di sistema sys.sp_delete_backup . Specificare il nome del database in modo che il sistema verifichi che il set di backup di snapshot di file specificato sia effettivamente un backup per il database specificato. Se non si specifica alcun nome di database, il set di backup specificato con i relativi snapshot di file verrà eliminato senza tale convalida.

Se si prova a eliminare un set di backup di snapshot di file usando un altro modo, ad esempio il portale di Azure o il visualizzatore di Archiviazione di Azure in SQL Server Management Studio, gli snapshot di file nel set di backup non verranno eliminati. Questi strumenti elimineranno il file di backup stesso che contiene i puntatori agli snapshot di file nel set di backup di snapshot di file. Per identificare gli snapshot di file di backup che rimangono dopo aver eliminato un file di backup in modo errato, usare la funzione di sistema sys.fn_db_backup_file_snapshots e quindi la stored procedure di sistema sys.sp_delete_backup_file_snapshot per eliminare un singolo snapshot di file di backup.

L'esempio seguente mostra come eliminare il set di backup di snapshot di file specificato, inclusi i file di backup e gli snapshot di file che costituiscono il set di backup specificato.

sys.sp_delete_backup 'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016.bak', 'adventureworks2016' ;

Visualizzare gli snapshot di file di backup del database

Per visualizzare snapshot di file di un BLOB di base per ogni file di database, usare la funzione di sistema sys.fn_db_backup_file_snapshots , che consente di visualizzare tutti gli snapshot di file di backup di ogni BLOB di base per un database archiviato usando il servizio di archiviazione BLOB di Azure. Un caso d'utilizzo primario per questa funzione prevede l'identificazione degli snapshot di file di backup di un database che rimangono quando il file di backup per un set di backup di snapshot di file viene eliminato usando un meccanismo diverso dalla stored procedure di sistema sys.sp_delete_backup . Per determinare gli snapshot di file di backup che fanno parte di set di backup intatti e quelli che non ne fanno parte, usare la stored procedure di sistema RESTORE FILELISTONLY per elencare gli snapshot di file che appartengono a ciascun file di backup.

L'esempio seguente restituisce l'elenco di tutti gli snapshot di file di backup per il database specificato.

USE AdventureWorks2016

select * from sys.fn_db_backup_file_snapshots (null) ;

GO

select * from sys.fn_db_backup_file_snapshots ('AdventureWorks2016') ;

Eliminare un singolo snapshot di file di backup di database

Per eliminare un singolo snapshot di file di backup di un BLOB di base di un database, usare la stored procedure di sistema sys.sp_delete_backup_file_snapshot . Un caso d'utilizzo primario per questa stored procedure di sistema prevede l'eliminazione dei file di snapshot di file orfani che rimangono dopo aver eliminato un file di backup con un metodo diverso dalla stored procedure di sistema sys.sp_delete_backup .

Avviso

L'eliminazione di un singolo snapshot di file che fa parte di un set di backup di snapshot di file invaliderà il set di backup.

L'esempio seguente mostra come eliminare lo snapshot di file di backup specificato. L'URL per il backup specificato viene ottenuto usando la funzione di sistema sys.fn_db_backup_file_snapshots .

sys.sp_delete_backup_file_snapshot N'adventureworks2016', N'https://[mystorageaccountname].blob.core.windows.net/[mycontainername]/AdventureWorks2016Data.mdf?snapshot=2015-05-29T21:31:31.6502195Z' ;