di: Marco Minerva 23 Settembre 2008
Il Database Snapshot è una funzionalità introdotta da SQL Server 2005 per la creazione di copie in sola lettura dei propri database. Il sistema consente di creare più snapshot dello stesso database, ciascuno dei quali rappresenta una "fotografia" dello stato del DB al momento della definizione dello snapshot stesso.
Possiamo utilizzare uno snapshot come un normale database, sul quale effettuare solo operazioni in lettura, in altre parole, possiamo eseguire solo delle SELECT. Questa operazione risulta utile per la scrittura di report basati sui dati disponibili al momento della creazione dello snapshot. In caso di errori nel database di origine, ad esempio una cancellazione accidentale, è possibile ripristinare lo stato corrispondente al momento in cui è stato creato lo snapshot: la perdita dei dati è limitata agli aggiornamenti applicati al database dopo la definizione dello snapshot.
È importante precisare che gli snapshot, come vedremo meglio nel seguito, dipendono dal database di origine: se quest'ultimo diventa inaccessibile, non è possibile utilizzare uno snapshot per il suo ripristino: in altre parole, gli snapshot non possono essere utilizzati al posto di un tradizionale backup del database, che rimane quindi essenziale. Inoltre, a causa di questa dipendenza, gli snapshot devono sempre risiedere nella stessa istanza del DBMS che ospita la sorgente dati.
Gli snapshot, infine, sono supportati unicamente nell'edizione Enterprise di SQL Server e per la loro creazione è necessario ricorrere agli appositi comandi T-SQL, poiché non sono previste modalità di utilizzo tramite interfaccia grafica.
Un database snapshot viene definito a partire da un database sorgente e rappresenta la copia in sola lettura del suo contenuto al momento della creazione; per questo motivo non comprende un log delle transazioni.
I diritti di accesso ad uno snapshot sono ereditati da quelli che aveva il database di origine al momento della creazione dello snapshot; eventuali cambiamenti di diritti nella sorgente, applicati dopo la creazione dello snapshot, non modificano i privilegi di accesso a quest'ultimo.
Gli snapshot lavorano a livello di pagine di dati; il loro funzionamento è basato sulla cosiddetta tecnica copy-on-write. Nel momento della creazione, i file che costituiscono uno snapshot (chiamati file sparsi) non contengono effettivamente dati, quindi occupano solo una piccola quantità di spazio su disco: questo accorgimento permette di creare uno snapshot quasi istantaneamente, anche per database di grandi dimensioni. Quando, dopo la definizione di uno snapshot, si verifica un cambiamento in una pagina del database di partenza, SQL Server scrive il contenuto originale della pagina all'interno dello snapshot (occupando una certa posizione all'interno del file sparso corrispondente), in modo da conservare lo stato delle informazioni al momento della creazione dello snapshot. Ogni successiva modifica ai dati viene ignorata poiché, ai fini del mantenimento dello snapshot, è sufficiente tenere traccia solo del valore originale.
|
SQL Maintenance Solution: soluzione free per la manutenzione di SQL Server |
Guida AccessIniziare a sviluppare database grazie alla potenza visuale offerta... |
Guida SQL Server 2005L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito... |
Guida OracleScoprire ed approfondire un dei più importanti RDBMS sulla scena... |
Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.
Iscriviti alla newsletter