Guida al backup di database con Sql Server - 1° parte

Giorgio Borelli

le diverse tipologe di backup effettuabili con microsoft sql serverAbbiamo visto in un articolo precedente "Le cause più comuni di perdita dei dati" quanto sia importante effettuare il backup dei propri dati, che il più delle volte permette di evitare delle vere e proprie catastrofi informatiche, desidero così approfondire l'argomento parlando nello specifico del backup di database con Microsoft Sql Server, uno dei database server più potenti e diffusi sul mercato.

Vista l'ampiezza dell'argomento ho deciso di suddividere questa guida al backup in quattro parti, concludendola con un ottimo script che ci permetterà di automatizzare il backup con SQL Server.

Innanzi tutto diciamo che il backup di database è una procedura per archiviare (in maniera precauzionale) i database in un modo strutturato tale da permettere un facile recupero in caso di necessità. SQL Server distingue tra backup statico e dinamico, il secondo permette di effettuare il backup di database anche mentre gli utenti stanno lavorando sull'applicativo che sfrutta il database.

Passiamo adesso a descrivere le quattro tipologie di backup che SQL Server mette a disposizione:

  • backup di database completo
  • backup di database differenziale
  • backup del log di transazioni
  • backup dei file di database

 

Backup di database completo

Questo tipo di backup prevede la copia dei dati e di tutte le strutture del database (schema delle tabelle, viste, store procedure, pagine di database, etc. etc.), in poche parole l'intero database comprensivo anche delle transazioni non terminate se il backup è di tipo dinamico. Importante precisare che qualunque sia la metodologia di backup che si vuole adottare, il primo backup da effettuare è quello completo, poichè tutti i backup descritti successivamente si appogiano su una copia di backup di database completo.

 

Backup di database differenziale

con questa tipologia di backup vengono salvate solo quelle parti del database modificate dall'ultimo backup di database completo, la caratteristica di questo backup è sicuramente la maggiore velocità rispetto a quello completo poichè la quantità di dati da salvare è minore. Se le dimensioni del database della vostra applicazione comincia a farsi considerevole, capite bene che il tempo e lo spazio impiegato per effettuare un backup di database differenziale risulta di gran lunga inferiore rispetto a quello completo. Anche in questo caso le transazioni sospese vengono anch'esse archiviate se SQL Server è impostato su un backup dinamico. 

 

Backup del log di transazioni

Diciamo innanzitutto cos'è un log di transazioni, sono un'insieme di file (uno o più di uno) che Sql Server usa per registrare tutti i record dei dati prima e dopo ogni transazione, Sql Server sfrutta così il log di transazioni per effettuare un recupero dall'ultima transazione nel caso qualcosa vada storta riportando in questo modo il database ad uno stato coerente.

Quindi un backup del log di transazioni non fà altro che archiviare le modifiche registrate nel file di log, di fatto non si salvano alcune parti fisiche del database ma solo le operazioni che coinvolgono le modifiche dei record presenti nel file di log.

Anche in questo caso la velocità di backup è superiore al backup completo ed anche di quello differenziale, poichè si và a salvare solo le operazioni logiche delle varie transazioni tra un backup e l'altro. Stesso discorso non possiamo dire per il recupero, che è più veloce con quello differenziale, poichè mentre per un recupero completo del database basterebbe un backup completo e l'ultimo backup differenziale, usando i backup dei log di transazioni invece bisogna eseguire il recovery del database completo ed il recovery di tutte le sequenze di backup delle varie transazioni dall'inizio del primo backup. Un'ulteriore considerazione però è quella che con il backup del log di transazioni durante il recupero possiamo però risalire ad un determinato stato del database cosa che non possiamo fare con quello differenziale poichè contiene solo le ultime modifiche.

 

NOTA: facciamo attenzione al log di transazioni, poichè se esso si riempie (diventa troppo grande) Sql Server blocca l'esecuzione di qualsiasi altra transazione. Possiamo o disabilitare la scrittura del log (cosa che sconsiglio) o effettuare dei backup del log che permettono così di svuotarlo di tutte quelle transazioni che vengono salvate correttamente liberando spazio sul file di log. Infine è utile dire pure che non è possibile effettuare il backup del log di transazioni sullo stesso file in cui è memorizzato il database, poichè se questo risultasse danneggiato non permetterebbe più di recuperare il log e ripristinare tutte le modifiche dall'ultimo backup. 

 

Backup dei file di database

Il backup di file consente di selezionare uno o più file (o filegroup) del database ed effettuarne il backup. Tale tipo di backup è particolarmente consigliato per database veramente di grandi dimensioni, dove il tempo per un backup completo risulterebbe eccessivo. Per il recupero necessità comunque del log di transazioni.

Categorie: database | Sql Server

Tags: , , , ,

Commenti (6) -

Attualmente non ho il mio pc dove è installato SQL server 2008 R2 perchè presso il tecnico che cerca di risolvermi da giorni un problema. tale problema riguarda l'istanza VLSQL248 che risulterebbe installata ma non "avviata". Volevo capire se è noto tale problema e come suggerire un'eventuale soluzione. grazie

Rispondi

Ma cosa significa di preciso "non avviata" che non si avvia o che è semplicemente stoppata?

Controlli tramite lo strumento Sql Server Configuration Manager che la sua istanza di Sql Server sia avviata ed eventualmente l'avvii.
Inoltre se desidera che questa si avvii in automatico all'accensione di Windows imposti il servizio dell'istanza in esecuzione Automatica all'avvio.

Se le serve altro mi trova ancora qui, saluti Giorgio.

Rispondi

Avevamo fatto (o meglio il tecnico da remoto ancora ieri) come da Lei indicato ma l'istanza non si avviava. Veniva fuori come messaggio di errore se non ricordo male "1067" come errore di windows.

Rispondi

L'errore 1067 di Sql Server indica un errore generico e le cause potrebbero essere diverse, per maggiori approfondimenti deve dire al tecnico di controllare il file di log di Sql Server.

Detto questo, per risolvere il problema, io concentrei l'attenzione su questi punti:

1) Controlli i permessi dell'utente che accede all'istanza, meglio se amministratore

2) Se lo usa in locale, nell'istanza di SQLServer cambi il tipo di accesso da "Servizio di Rete" a "Servizio Locale" o "Sistema Locale" (questo potrebbe risolverle il problema, se non ha esigenze di rete)

3) Controlli che i protocolli di rete TCP/IP, Named Pipe etc. siano configurati correttamente.

4) Verifichi ed eventualmente installi la versione più aggiornata del .NET framework sul suo sistema.

5) Se non risolve, potrebbe essere necessaria una reinstallazione pulita e corretta di Sql Server.

Spero di esserLe stato d'aiuto, se risolve mi faccia sapere, saluti Giorgio.

Rispondi

Volevo inviarle lo script di quanto viene fuori nell'apertura del software che funziona con il database di SQL server. Purtroppo, il tecnico ieri sera mi ha restituito il pc senza aver risolto un bel niente ed ho l'impressione che non ci capisca molto. Se non capisce lui, figuriamoci la sottoscritta che non è nè una sistemista nè un'esperta di reti, hardware o software. Come posso inviare o allegare il messaggio di errore che viene fuori? Sembra che non si riesca a stabilire una connessione a SQL server in realtà....ma volevo inviarLe il messaggio corretto.

Rispondi

Gentile Moira, per gli allegati SI che può usare la pagina contatti Smile.
Me lo invii pure, gli darò un'occhiata, ma come avete intuito, anche io propendo per problemi di connessione col server, i fattori possono essere molteplici e non avendo il PC davanti e la possibilità di fare opportune prove, mi viene difficile stabilirne le cause e la risoluzione, vedrò di fare il possibile.

P.S. al tecnico ha suggerito di effettuare le prove che le ho indicato nel commento precedente?

Rispondi

Pingbacks and trackbacks (1)+

Aggiungi Commento

biuquote
Loading