Backup database (Parte I)

In questo tutorial andremo ad analizzare i backup in una database SQL Server 2005.

Innanzitutto, cos'è un backup: si tratta di una copia del database  strutturata in modo tale da permettere il recupero dei dati in esso contenuti in qualsiasi momento

Modelli di recupero:

Prima di lavorare con un backup, è necessario definire che modello di recupero si vuol seguire. SQL Server 2005 mette a disposizione tre modelli:

  • Simple - è il recupero semplice, nel quale non viene copiato il log della transaction, ed è dunque possibile recuperare unicamente i più recenti backup
  • Full - vengono copiati sia i dati nel database che il log della transaction, così che si possa recuperare il database in ogni momento
  • Bulk Logged - molte transaction vengono salvate nel log delle traslaction, mentre alcune operazioni Bulk vengono tralasciate

Le più utilizzate sono le prime due possibilità; generalmente, si usa il Simple nel caso in cui non ci siano problemi a perdere i dati salvati dall' ultimo backup completo (spesso usato per i database secondari, che non sono parte vitale dell' applicazione); si usa invece il Full nel caso in cui ciascun bit di dati sia di vitale importanza per il funzionamento dell' applicazione.

Lavorare con il recupero Simple:

Vediamo come strutturare lo script di backup nel caso si sua scelta la modalità di recupero Simple, per un database piccolo o medio. Ecco come impostarlo:

ALTER DATABASE AdventureWorks 
        SET RECOVERY SIMPLE

La strategia più semplice per ottenere un backup è l' avviare il comando SQL seguente, che esegue un backup completo del db, ad intervalli regolari:

BACKUP DATABASE  AdventureWorks 
TO DISK =  'C:BackupsAdventureWorks.BAK'

Ma SQL Server 2005 ci mette anche a disposizione il SQL Server Management Studio, che semplifica le cose. Noi però vogliamo capire, non eseguire...quindi accantoniamo il  Management Studio.

Backups Copy-only:

Normalmente i backup effettuati vengono poi utilizzati dal server SQL come base differenziale per trovare le modifiche apportate al database dall' ultimo backup. Nel caso però in cui i backup sia volto a creare una copia da utilizzare per uno scopo preciso, senza volere che vada ad influenzare il database, SQL Server 2005 ci mette a disposizione l' attributo COPY_ONLY

BACKUP DATABASE AdventureWorks  
TO DISK = 'C:BackupsAdventureWorks.bak'  
WITH COPY_ONLY;

Backups Differenziali:

Pensiamo di dover trattare con un database molto grande, ad esempio di 100 GB. Un backup di 100 GB richia di rallentare molto il database, mentre l' operazione di copia è in corso...E supponiamo anche che sia necessario eseguire un backup a settimana del database: significherebbe un ora a settimana in cui il database rallenta notevolmente. Questo fastidioso inconveniente può essere scongiurato grazie ai backups differenziali (differential backups), che eseguono la copia solo dei dati e elle parti del database che sono stati modificati dopo l' ultimo full backup del database.

Per iniziare un backup differenziale, ecco il codice:

BACKUP DATABASE AdventureWorks  
TO DISK = 'C:ackupsAdventureWorks.bak' 
WITH DIFFERENTIAL;

E se volessimo recuperare il database? Dovremmo dapprima recuperare il full backup ed in seguito recuperare uno dopo l' altro i backups differenziali.

Nel caso si provi ad eseguire il comando sopra riportato, si potrà notare che non abbiamo cambiato ogni volta il nome del file di backup. Non è sbagliato, in quanto SQL Server 2005, in casi di omonimia come questi, aggiunge semplicemente i pezzi mancanti al vecchio backup, diminuendo il tempo necessario alla copia completa.

Nel caso invece in cui si voglia sovrascrivere un file esistente, ecco il codice:

BACKUP DATABASE Adventureworks  
TO DISK = 'C:ackupsAdventureWorks.bak'  
WITH INIT;

Infine, per accertarci, in termini di accessibilità, dell' integrità del file di backup appena creato, ecco cosa scrivere:

RESTORE VERIFYONLY  
FROM DISK = 'C:ackupsAdventureworks.bak'

 

 

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!