Backup differenziali [SQL Server]Differential Backups (SQL Server)

Questo argomento relativo a backup e ripristino è applicabile a tutti i database di SQL ServerSQL Server .This backup and restore topic is relevant for all SQL ServerSQL Server databases.

Un backup differenziale si basa sul backup dei dati completo precedente più recente.A differential backup is based on the most recent, previous full data backup. In un backup differenziale vengono acquisiti solo i dati che hanno subito modifiche dopo il backup completo.A differential backup captures only the data that has changed since that full backup. Il backup completo su cui si basa un backup differenziale è noto come base del backup differenziale.The full backup upon which a differential backup is based is known as the base of the differential. I backup completi, ad eccezione di backup di sola copia, possono servire come base per una serie di backup differenziali, compresi backup di database, backup parziali e backup di file.Full backups, except for copy-only backups, can serve as the base for a series of differential backups, including database backups, partial backups, and file backups. Il backup di base per un backup differenziale di file può essere contenuto in un backup completo, un backup di file o un backup parziale.The base backup for a file differential backup can be contained within a full backup, a file backup, or a partial backup.

Vantaggi Benefits

  • La creazione di backup differenziali può risultare molto rapida rispetto alla creazione di un backup completo.Creating a differential backups can be very fast compared to creating a full backup. Un backup differenziale registra solo i dati modificati dopo l'ultimo backup completo su cui si basa il backup differenziale.A differential backup records only the data that has changed since the full backup upon the differential backup is based. Ciò facilita l'esecuzione più frequente di backup dei dati, riducendo il rischio di perdita di dati.This facilitates taking frequent data backups, which decrease the risk of data loss. Prima di ripristinare un backup differenziale, è tuttavia necessario eseguire il ripristino della relativa base.However, before you restore a differential backup, you must restore its base. Pertanto, l'esecuzione di un ripristino da un backup differenziale richiederà necessariamente più passaggi e tempo di un ripristino da un backup completo, poiché sono richiesti due file di backup.Therefore restoring from a differential backup will necessarily take more steps and time than restoring from a full backup because two backup files are required.

  • I backup differenziali del database risultano particolarmente utili se un subset di un database viene modificato più spesso rispetto al resto del database.Differential database backups are especially useful if a subset of a database is modified more frequently than the rest of the database. In questi casi, i backup differenziali del database consentono di eseguire frequentemente backup evitando l'overhead tipico dei backup completi del database.In these cases, differential database backups enable you back up frequently without the overhead of full database backups.

  • In base al modello di recupero con registrazione completa, l'utilizzo di backup differenziali può ridurre il numero di backup del log che è necessario ripristinare.Under the full recovery model, using differential backups can reduce the number of log backups that you have to restore.

Panoramica dei backup differenziali Overview of Differential Backups

Un backup differenziale acquisisce lo stato di qualsiasi extent (raccolta di otto pagine fisicamente contigue) che ha subito modifiche tra la creazione della base differenziale e la creazione del backup differenziale.A differential backup captures the state of any extents (collections of eight physically contiguous pages) that have changed between when the differential base was created and the when differential backup is created. Le dimensioni di un determinato backup differenziale dipendono pertanto dalla quantità di dati modificata rispetto alla base.This means that the size of a given differential backup depends on the amount of data that has changed since the base. In genere, meno recente è la base, maggiori saranno le dimensioni di un nuovo backup differenziale.Generally, the older a base is, the larger a new differential backup will be. In una serie di backup differenziali, è probabile che gli extent aggiornati di frequente contengano dati diversi in ogni backup differenziale.In a series of differential backups, a frequently updated extent is likely to contain different data in each differential backup.

Nella figura seguente viene illustrato il funzionamento di un backup differenziale.The following illustration shows how a differential backup works. Nella figura sono illustrati 24 extent di dati, sei dei quali sono stati modificati.The figure shows 24 data extents, 6 of which have changed. Il backup differenziale contiene solo questi sei extent di dati.The differential backup contains only these 6 data extents. L'operazione di backup differenziale è basata su una pagina della mappa di bit contenente un bit per ogni extent.The differential backup operation relies on a bitmap page that contains a bit for every extent. Per ogni extent aggiornato rispetto alla base, il bit viene impostato su 1 nella mappa di bit.For each extent updated since the base, the bit is set to 1 in the bitmap.

La mappa di bit differenziale identifica gli extent modificatiDifferential bitmap identifies changed extents

Nota

La mappa di bit differenziale non viene aggiornata da un backup di sola copia.The differential bitmap is not updated by a copy-only backup. Di conseguenza, un backup di sola copia non influisce sui backup differenziali successivi.Therefore, a copy-only backup does not affect subsequent differential backups.

Un backup differenziale eseguito entro un periodo di tempo relativamente breve dalla base in genere ha dimensioni decisamente più ridotte rispetto alla base differenziale,A differential backup that is taken fairly soon after its base is usually significantly smaller than the differential base. il che consente di limitare lo spazio di archiviazione e il tempo di esecuzione del backup.This saves storage space and backup time. Con il passare del tempo, tuttavia, le modifiche apportate a un database comportano un aumento delle differenze tra tale database e una determinata base differenziale.However, as a database changes over time, the difference between the database and a specific differential base increases. In genere, l'aumento delle dimensioni del backup differenziale è direttamente proporzionale alla lunghezza del periodo che intercorre tra l'esecuzione di un backup differenziale e la creazione della relativa base.The longer the time between a differential backup and its base, the larger the differential backup is likely to be. Questo significa che, con il passare del tempo, le dimensioni dei backup differenziali possono avvicinarsi a quelle della base differenziale.This means that the differential backups can eventually approach the differential base in size. Un backup differenziale di notevoli dimensioni non offre più i vantaggi correlati alla maggiore rapidità e allo spazio di archiviazione ridotto.A large differential backup loses the advantages of a faster and smaller backup.

A causa dell'aumento delle dimensioni dei backup differenziali, il ripristino di un backup di questo tipo può comportare un notevole aumento del tempo necessario per il ripristino di un database.As the differential backups increase in size, restoring a differential backup can significantly increase the time that is required to restore a database. È consigliabile pertanto eseguire un nuovo backup completo a intervalli prestabiliti per creare una nuova base differenziale per i dati.Therefore, we recommend that you take a new full backup at set intervals to establish a new differential base for the data. È ad esempio possibile eseguire un backup completo settimanale dell'intero database, ovvero un backup completo del database, seguito da una serie regolare di backup differenziali del database nell'arco della settimana.For example, you might take a weekly full backup of the whole database (that is, a full database backup) followed by a regular series of differential database backups during the week.

Prima di ripristinare un backup differenziale, è necessario eseguire il ripristino della relativa base.At restore time, before you restore a differential backup, you must restore its base. Ripristinare quindi solo il backup differenziale più recente per riportare il database allo stato esistente nel momento in cui è stato creato tale backup differenziale.Then, restore only the most recent differential backup to bring the database forward to the time when that differential backup was created. In genere, si ripristina il backup completo più recente, seguito dal backup differenziale più recente basato su tale backup completo.Typically, you would restore the most recent full backup followed by the most recent differential backup that is based on that full backup.

Backup differenziali di database con tabelle con ottimizzazione per la memoriaDifferential Backups of Databases with Memory-Optimized Tables

Per informazioni sui backup differenziali e sui database con tabelle con ottimizzazione per la memoria, vedere Backup di un database con tabelle con ottimizzazione per la memoria.For information about differential backups and databases with memory-optimized tables, see Backing Up a Database with Memory-Optimized Tables.

Backup differenziali di database di sola lettura Differential Backups of Read-Only Databases

Per i database di sola lettura, i backup completi sono più semplici da gestire quando vengono utilizzati singolarmente anziché in combinazione con i backup differenziali.For read-only databases, full backups used alone are easier to manage than when they are used with differential backups. Quando un database è di sola lettura, il backup e le altre operazioni non sono in grado di modificare i metadati inclusi nel file.When a database is read-only, backup and other operations cannot change the metadata that is contained in the file. I metadati necessari per un backup differenziale, ad esempio il numero di sequenza del file di log in corrispondenza del quale il backup differenziale ha inizio (l'LSN di base del backup differenziale), vengono pertanto archiviati nel database master .Therefore, metadata that is required by a differential backup, such as the log sequence number at which the differential backup begins (the differential base LSN) is stored in the master database. Se la base differenziale viene creata quando il database è di sola lettura, la mappa di bit differenziale indicherà un numero maggiore di modifiche rispetto a quelle effettivamente apportate dopo il backup di base.If the differential base is taken when the database is read-only, the differential bitmap indicates more changes than have actually occurred since the base backup. I dati aggiuntivi vengono letti dal backup, ma non vengono scritti nel backup, perché tramite il valore differential_base_lsn archiviato nella tabella di sistema backupset viene determinato se i dati sono realmente cambiati dopo la creazione della base.The extra data is read by backup, but is not written to the backup, because the differential_base_lsn stored in the backupset system table is used to determine whether the data has actually changed since the base.

Quando viene ricompilato, ripristinato oppure scollegato e collegato un database di sola lettura, le informazioni relative alla base differenziale vengono perseWhen a read-only database is rebuilt, restored, or detached and attached, the differential-base information is lost. perché il database master non è sincronizzato con il database utente.This occurs because the master database is not synchronized with the user database. Il Motore di database di SQL ServerSQL Server Database Engine non è in grado di rilevare né evitare questo problema.The Motore di database di SQL ServerSQL Server Database Engine cannot detect or prevent this problem. Gli eventuali backup differenziali successivi non saranno basati sul backup completo più recente e potrebbero generare risultati imprevisti.Any later differential backups are not based on the most recent full backup and could provide unexpected results. Per creare una nuova base differenziale, è consigliabile eseguire un backup completo del database.To establish a new differential base, we recommend that you create a full database backup.

Procedure consigliate per l'utilizzo di backup differenziali con un database di sola letturaBest Practices for Using Differential Backups with a Read-Only Database

Se dopo la creazione di un backup completo di un database di sola lettura si ha intenzione di creare un successivo backup differenziale, eseguire il backup del database master .After you create a full database backup of a read-only database, if you intend to create a subsequent differential backup, back up the master database.

In caso di perdita del database master , ripristinarlo prima dei backup differenziali di un database utente.If the master database is lost, restore it before you restore any differential backup of a user database.

Se si scollega e si collega un database di sola lettura per il quale in seguito si prevede di usare backup differenziali, eseguire non appena possibile un backup completo sia del database di sola lettura che del database master .If you detach and attach a read-only database for which you plan to later use differential backups, as soon as it is practical, take a full database backup of both the read-only database and of the master database.

Vedere ancheSee Also

Panoramica del backup (SQL Server) Backup Overview (SQL Server)
Backup completo del database (SQL Server) Full Database Backups (SQL Server)
Ripristini di database completi (modello di recupero con registrazione completa) Complete Database Restores (Full Recovery Model)
Ripristini di database completi (modello di recupero con registrazione minima) Complete Database Restores (Simple Recovery Model)
Backup di log delle transazioni (SQL Server) Transaction Log Backups (SQL Server)