Backup file-snapshot per file file in Azure

Si applica a:SQL Server

Il backup file-snapshot di SQL Server utilizza snapshot Azure per fornire backup quasi istantanei (e ripristini più rapidi) dei file di database memorizzati in Archiviazione BLOB di Azure. Usa backup file-snapshot per semplificare le tue politiche di backup e ripristino.

Per maggiori informazioni sull'archiviazione dei file di database in Archiviazione BLOB di Azure, consulta SQL Server data files in Microsoft Azure.

Diagramma che illustra l'architettura di backup degli snapshot.

Se si ha già un account di Azure, Visita SQL Server in Macchine virtuali di Azure per creare una macchina virtuale che abbia SQL Server preinstallato.

Uso degli snapshot di Azure per eseguire il backup dei file di database archiviati in Azure

Cos'è un backup file-snapshot su SQL Server?

Un backup file-snapshot è un insieme di snapshot Azure dei blob che contengono i file del database, più un file di backup con puntatori a quei file-snapshot. Ogni file-snapshot risiede nel contenitore con il blob base.

Puoi scrivere il file di backup su URL, disco o nastro, ma dovresti fare il backup a URL quando possibile. Per maggiori informazioni, consulta BACKUPSQL Server backup su URL per Archiviazione BLOB di Azure.

Diagramma dell'architettura della funzionalità degli snapshot.

Eliminare il blob base invalida il set di backup. Non puoi lasciare un blob che contiene file-snapshot a meno che tu non scelga esplicitamente di eliminare il blob insieme a tutti i file-snapshot. Perdere un database o un file di dati non cancella il blob base né nessuno dei suoi file snapshot, e eliminare il file di backup non cancella nessuno dei file snapshot nel set di backup. Per eliminare un set di backup file-snapshot, usare la stored procedure di sistema sys.sp_delete_backup.

Backup completo del database: Un backup completo con snapshot file prende uno snapshot Azure di ogni file di dati e log nel database, stabilisce la catena di backup del log delle transazioni e scrive le posizioni snapshot del file nel file di backup.

Backup del registro delle transazioni: Un backup snapshot del file del log delle transazioni prende uno snapshot di ogni file del database (non solo il registro delle transazioni), registra le posizioni snapshot nel file di backup e tronca il registro delle transazioni.

Importante

Dopo il backup completo iniziale che stabilisce la catena di backup del log delle transazioni (che può essere a sua volta un backup snapshot file), servono solo i backup del log delle transazioni. Ogni set di backup di file snapshot di log delle transazioni contiene snapshot di ogni file del database, quindi puoi usarlo sia per un ripristino del database che per un ripristino del log. Non servono backup completi o differenziali extra perché Archiviazione BLOB di Azure gestisce le differenze tra ogni file-snapshot e lo stato attuale del blob base.

Per un tutorial sull'uso di SQL Server con Archiviazione BLOB di Azure, vedi Tutorial: Usa Archiviazione BLOB di Azure con SQL Server.

Ripristinare tramite backup di snapshot dei file

Ogni set di backup file-snapshot contiene un file-snapshot di ogni file del database, quindi un ripristino richiede al massimo due set di backup file-snapshot adiacenti. Questo requisito è valido sia che il set di backup provenga da un backup completo del database sia da un backup di log. Con il backup tradizionale in streaming, il processo di ripristino richiede il backup completo, un backup differenziale e uno o più backup del log delle transazioni. Il passaggio di recupero è lo stesso per entrambi gli approcci.

Fino al tempo di qualsiasi set di backup: per ripristinare un database al tempo di uno specifico set di backup istantaneo file, RESTORE DATABASE serve solo quel set di backup e i blob di base. Poiché RESTORE DATABASE funziona con un set di backup file snapshot nel log delle transazioni, di solito si usa un set di backup del log delle transazioni e raramente si utilizza un set completo di backup del database. Vedi l'esempio più avanti in questo articolo.

A un punto temporale tra due set di backup file-snapshot: per ripristinare un database a un punto specifico tra due set di backup log delle transazioni adiacenti, RESTORE DATABASE sono necessari solo due set di backup log delle transazioni: uno prima del momento in cui si vuole ripristinare il database, e uno successivo. Esegui RESTORE DATABASE ... WITH NORECOVERY usando il set di backup precedente, e poi RESTORE LOG ... WITH RECOVERY usa quello successivo. Usa l'argomento STOPAT per specificare il momento in cui fermare il recupero dal backup del log delle transazioni. Vedi l'esempio più avanti in questo articolo.

Manutenzione del set di backup dei file

Eliminazione di un set di backup file-snapshot: Non puoi sovrascrivere un set di backup file-snapshot con l'argomento FORMAT . L'argomento FORMAT non è permesso perché può creare snapshot orfani di file dal backup originale dello snapshot. Per eliminare un set di backup, usa la sys.sp_delete_backup procedura di memoria di sistema. Rimuove il file di backup e ogni file-snapshot nel set. Altri metodi di cancellazione potrebbero rimuovere il file di backup ma lasciare indietro gli snapshot del file.

Eliminazione degli snapshot di file di backup orfani: Potresti finire con snapshot di file orfani se elimini il file di backup senza sys.sp_delete_backup, oppure se elimini un database o un file di dati mentre i suoi blob hanno ancora snapshot di backup associati. Per trovare candidati, usa la sys.fn_db_backup_file_snapshots funzione di sistema per elencare ogni file-snapshot dei file del database. Per vedere quali file-snapshot appartengono a un set di backup specifico, si utilizza la RESTORE FILELISTONLY procedura di memoria di sistema. Poi rimuovi un orfano con la sys.sp_delete_backup_file_snapshot procedura di sistema memorizzata. Vedi gli esempi più avanti in questo articolo.

Per ulteriori informazioni consulta:

Considerazioni e limitazioni

Archiviazione premium: Quando si utilizza lo storage premium, si applicano le seguenti limitazioni:

Singolo account di archiviazione: L'istantaneo del file e i blob di destinazione devono utilizzare lo stesso account di archiviazione.

Modello di recupero in massa: Se usi il modello di recupero con log di transazione con backup del log delle transazioni che contiene transazioni registrate minimamente, non puoi ripristinare il log (incluso il recupero puntuale) da quel backup. Invece, ripristina il database all'orario del set di backup snapshot del file. La stessa limitazione vale per il backup in streaming.

Ripristino online: Non puoi effettuare un ripristino online da un backup snapshot file. Per altre informazioni sul ripristino in linea, vedere Ripristino in linea (SQL Server).

Fatturazione: Il backup file-snapshot di SQL Server aggiunge costi in base alle modifiche dei dati. Per ulteriori informazioni, consulta Comprendere come gli snapshot comportano addebiti.

Archivio: Puoi archiviare un backup file-snapshot su Archiviazione BLOB di Azure o su backup in streaming. Per Archiviazione BLOB di Azure, copia gli snapshot nel set di backup file-snapshot in blob separati. Per il backup in streaming, ripristina il backup snapshot del file come nuovo database, e poi effettua un backup in streaming regolare con compressione e/o crittografia. Puoi tenere l'archivio quanto vuoi, indipendentemente dai blob di base.

Importante

Mantenere più backup snapshot di file comporta solo un piccolo overhead di prestazioni, ma mantenerne troppi può influire sulle prestazioni di I/O sul database. Tieni solo i backup snapshot dei file di cui hai bisogno per raggiungere il tuo obiettivo di recovery.

Eseguire il backup del database e del registro usando un backup file-snapshot

Il seguente esempio utilizza un backup snapshot di file per fare il backup del AdventureWorks2025 database campione su un URL.

-- To permit log backups, before the full database backup, modify the database

-- to use the full recovery model.
USE master;
GO

ALTER DATABASE AdventureWorks2025
    SET RECOVERY FULL;
GO

-- Back up the full AdventureWorks2025 database.
BACKUP DATABASE AdventureWorks2025
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025.bak'
WITH FILE_SNAPSHOT;
GO

-- Back up the AdventureWorks2025 log using a timestamp in the backup file name.
DECLARE @Log_Filename AS VARCHAR (300);

SET @Log_Filename = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_Log_'+
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';

BACKUP LOG AdventureWorks2025
 TO URL = @Log_Filename WITH FILE_SNAPSHOT;
GO

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

Il seguente esempio ripristina il AdventureWorks2025 database utilizzando un set di backup file snapshot di log delle transazioni, e mostra un'operazione di recupero. Puoi ripristinare un database da un singolo set di backup file snapshot di log di transazione.

RESTORE DATABASE AdventureWorks2025 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_16_00_00.trn'
    WITH RECOVERY, REPLACE;
GO

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

L'esempio seguente utilizza due set di backup file snapshot di log delle transazioni per ripristinare il AdventureWorks2025 database al suo stato in un momento specificato, e mostra un'operazione di recupero.

RESTORE DATABASE AdventureWorks2025
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_16_00_00.trn'
    WITH NORECOVERY,
         REPLACE;
GO

RESTORE LOG AdventureWorks2025
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_18_00_00.trn'
    WITH RECOVERY,
         STOPAT = 'May 18, 2026 5:35 PM';
GO

Eliminare un set di backup file-snapshot del database

Per eliminare un set di backup file-snapshot, usare la stored procedure di sistema sys.sp_delete_backup. Includi il nome del database in modo che la procedura verifichi che il set di backup sia un backup per quel database. Se ometti il nome del database, la procedura salta quella verifica ed elimina il set di backup e i suoi file-snapshot. Per altre informazioni, vedere sp_delete_backup.

Avviso

Se elimini un set di backup snapshot file in un altro modo, ad esempio dal portale Azure o dal nodo Archiviazione di Azure nell'Esplora oggetti di SQL Server Management Studio, gli snapshot dei file rimangono. Questi strumenti rimuovono solo il file di backup, che contiene i puntatori agli snapshot dei file. Per trovare gli snapshot residui dei file, usa la sys.fn_db_backup_file_snapshots funzione di sistema e poi elimina ciascuno con la sys.sp_delete_backup_file_snapshot procedura di memoria di sistema.

Il seguente esempio elimina un set di backup file-snapshot, inclusi il suo file di backup e ogni file-snapshot del set.

EXECUTE sys.sp_delete_backup
    'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025.bak',
    'AdventureWorks2025';
GO

Visualizza istantanee dei file di backup del database

Per elencare gli snapshot del file del blob base per ogni file di database, si utilizza la sys.fn_db_backup_file_snapshots funzione di sistema. Puoi trovare snapshot dei file di backup che rimangono quando qualcosa di diverso da sys.sp_delete_backup eliminare il file di backup per un set di backup file-snapshot. Per vedere quali snapshot di file appartengono a un set di backup integro, si utilizza RESTORE FILELISTONLY per elencare gli snapshot di file a cui ciascun file di backup fa riferimento. Per ulteriori informazioni, vedi sys.fn_db_backup_file_snapshots e RESTORE Dichiarazioni - FILELISTONLY.

L'esempio seguente elenca ogni snapshot di file di backup per un database.

--Either specify the database name or set the database context
USE AdventureWorks2025;

SELECT *
FROM sys.fn_db_backup_file_snapshots(NULL);
GO

SELECT *
FROM sys.fn_db_backup_file_snapshots('AdventureWorks2025');
GO

Elimina uno snapshot singolo di file di backup del database

Per eliminare uno snapshot individuale di un file di backup di un blob di base del database, si utilizza la sys.sp_delete_backup_file_snapshot procedura di archiviazione di sistema. Usalo principalmente per pulire snapshot di file orfani che rimangono quando un processo diverso sys.sp_delete_backup da quello di backup elimina il file di backup. Per altre informazioni, vedere sp_delete_backup_file_snapshot.

Avviso

Eliminare uno snapshot di file individuale che appartiene a un set di backup snapshot di file invalida il set di backup.

Il seguente esempio elimina uno snapshot di un file di backup. Puoi ottenere l'URL da sys.fn_db_backup_file_snapshots.

EXECUTE sys.sp_delete_backup_file_snapshot
    N'AdventureWorks2025',
    N'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025Data.mdf?snapshot=2026-05-29T21:31:31.6502195Z';
GO