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'
- Articolo precedente Prestazioni: migliorare problemi di lentezza di un database
- Articolo successivo Ottimizzare query SQL: velocizzare l'esecuzione
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!