Backup con il modello di recupero con registrazione completa
Il modello di recupero con registrazione completa prevede l'utilizzo di backup del log per evitare perdite di dati in una vastissima gamma di scenari di errore e richiede pertanto il backup e il ripristino del log delle transazioni (operazione denominata backup del log). Il vantaggio derivante dall'utilizzo dei backup del log consiste nella possibilità di ripristinare un database fino a un qualsiasi punto nel tempo all'interno di un backup del log (operazione denominata recupero temporizzato). È possibile utilizzare una serie di backup del log per eseguire il rollforward di un database fino a qualsiasi punto nel tempo all'interno di uno dei backup del log. Si noti che per ridurre al minimo i tempi di ripristino, è possibile integrare ogni backup completo con una serie di backup differenziali degli stessi dati.
Se è possibile eseguire il backup del log attivo in seguito a un'emergenza, sarà possibile ripristinare il database fino al punto di errore senza alcuna perdita di dati. Gli svantaggi correlati all'utilizzo dei backup del log sono lo spazio di archiviazione necessario e l'aumento del tempo di esecuzione del ripristino nonché del grado di complessità.
[!NOTA]
Se i vantaggi derivanti dall'utilizzo di backup del log non giustificano il costo della gestione dei backup, si consiglia di utilizzare il modello di recupero con registrazione minima.
Nel caso di un database che normalmente utilizza il modello di recupero con registrazione completa, è possibile ottimizzare determinate operazioni bulk passando temporaneamente al modello di recupero con registrazione minima delle operazioni bulk. Questo modello di recupero prevede numerose restrizioni che lo rendono inadeguato per un utilizzo quotidiano. Per ulteriori informazioni, vedere Backup in base al modello di recupero con registrazione minima delle operazioni bulk.
Esempio di strategia di backup
Nella figura seguente viene illustrata la strategia di backup più semplice in base al modello di recupero con registrazione completa. Nella figura sono stati eseguiti un backup completo del database, Db_1, e due backup del log di routine, Log_1 e Log_2. Qualche tempo dopo il backup di Log_2, nel database si verifica una perdita di dati. Prima del ripristino di questi tre backup, l'amministratore del database deve eseguire il backup del log attivo, ovvero della parte finale del log. L'amministratore del database ripristina quindi Db_1, Log_1 e Log_2 senza recuperare il database e infine ripristina e recupera il backup della parte finale del log. In questo modo, il database e tutti i dati vengono recuperati fino al punto di errore.
Per ulteriori informazioni, vedere Backup completo del database e Utilizzo dei backup del log delle transazioni.
Riduzione del rischio di perdita dei dati
Al termine del primo backup completo del database e dopo l'avvio dei backup regolari del log, il rischio di perdita dei dati è limitato al periodo compreso tra il momento in cui è avvenuto il danneggiamento del database e il backup regolare del log più recente. È pertanto consigliabile eseguire backup del log con una frequenza sufficiente a contenere il rischio di perdita dei dati entro i requisiti specificati dall'azienda.
Nella figura seguente viene illustrata una strategia di backup in base alla quale i backup completi del database e i backup del log vengono integrati con backup differenziali del database. I backup del log delle transazioni riducono il rischio di perdita dei dati al periodo successivo al backup del log più recente, ovvero il punto t14. Viene eseguita una serie di tre backup differenziali per ridurre il numero di log delle transazioni da ripristinare in caso di errore. Le dimensioni del terzo backup differenziale sono sufficientemente grandi da richiedere l'esecuzione di un backup completo del database per il backup successivo. In questo modo viene creata una nuova base differenziale.
Nel periodo precedente al primo backup del database illustrato nella figura, il database è esposto al rischio di perdita dei dati (dal punto t0 al punto t1). In seguito, i backup del log di routine limitano il rischio alla sola perdita delle modifiche apportate dopo l'ultimo backup del log, che nella figura è stato eseguito nel punto t14. In caso di errore in seguito al backup più recente, l'amministratore del database tenterà di eseguire il backup della parte finale del log, ovvero del log di cui non è stato ancora eseguito il backup. Se il backup di questa parte del log ha esito positivo, l'amministratore del database può evitare la perdita di dati ripristinando il database fino al punto in cui si è verificato l'errore.
Per ulteriori informazioni sui backup differenziali del database, vedere Utilizzo dei backup differenziali.
Operazioni bulk e modello di recupero con registrazione completa
Mediante la registrazione di tutte le operazioni, incluse operazioni bulk quali SELECT INTO, CREATE INDEX e il caricamento bulk dei dati, il modello di recupero con registrazione completa consente di eseguire il recupero di un database fino al punto di errore o fino a un punto nel tempo precedente (operazione denominata ripristino temporizzato).
Molti utenti che implementano il modello di recupero con registrazione completa passano temporaneamente al modello di recupero con registrazione minima delle operazioni bulk quando i vantaggi legati al caricamento bulk dei dati e al miglioramento delle prestazioni superano lo svantaggio del rischio potenziale di perdita dei dati. Il modello di recupero con registrazione minima delle operazioni bulk riduce al minimo la registrazione delle operazioni bulk, ma prevede una registrazione completa delle altre transazioni. Per ulteriori informazioni sul modello di recupero con registrazione minima delle operazioni bulk, vedere Backup in base al modello di recupero con registrazione minima delle operazioni bulk.
[!NOTA]
In SQL Server 2005 e versioni successive l'opzione di database select into/bulkcop di sp_dboption non è necessaria in nessun caso e deve essere sempre evitata. Utilizzare invece l'opzione ALTER DATABASE. La stored procedure sp_dboption verrà rimossa a partire da una delle prossime versioni di SQL Server.
Utilizzo dei backup per il ripristino di un database
Per ripristinare un database è necessario eseguire una sequenza di operazioni di ripristino (denominata sequenza di ripristino). Una sequenza di ripristino ha inizio con il ripristino di almeno un backup completo, seguito facoltativamente da un backup differenziale corrispondente.
Ogni backup completo e differenziale contiene un numero sufficiente di record del log da consentirne l'utilizzo per il recupero del database. In genere, tuttavia, è consigliabile ripristinare i backup del log successivi in sequenza, fino al backup della parte finale del log, se disponibile. Prima di iniziare il ripristino di un database, è quindi necessario creare un backup della parte finale del log, che consente di ripristinare il database fino al punto in cui si è verificato un errore. Dopo aver ripristinato l'ultimo backup del log, è necessario recuperare il database.
[!NOTA]
Quando si utilizza il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk, in SQL Server 2005 Enterprise Edition e versioni successive è possibile eseguire il ripristino di file o pagine oppure sia di file sia di pagine mentre un database è in linea. Questo tipo di ripristino è denominato ripristino in linea. La sintassi dell'istruzione RESTORE per il ripristino di file o pagine è la stessa indipendentemente dal fatto che il database sia in linea o non in linea.
Per ulteriori informazioni, vedere Panoramica del ripristino e del recupero (SQL Server).
Vedere anche