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

Giorgio Borelli

effettuare il backup di database tramite le istruzioni Transact-SQL di Sql ServerAbbiamo visto nell’articolo precedente “Guida al backup di database con Sql Server – 3° parte” come effettuare manualmente il backup di database con Sql Server Management Studio, ed abbiamo specificato che un altro possibile metodo è tramite le dichiarazioni Transact-SQL.

Vedremo appunto in questo articolo come usare queste dichiarazioni per eseguire il backup dei nostri database.

Precisiamo nuovamente che per poter effettuare un backup di database, è necessario aver specificato un dispositivo di backup, questo può essere definito sia su disco che su nastro, collocato sullo stesso hard disc locale in cui gira l’istanza di Sql Server (sconsigliato), su una risorsa di rete opportunamente condivisa o su un disco remoto.

Le dichiarazioni Transact-SQL utilizzate per effettuare il backup sono due:

  • Backup database
  • Backup log

 

Backup database

Questa istruzione sql può essere utilizzata per effettuare sia un backup di database completo che differenziale (vedi Guida al backup di database con Sql Server – 1° parte), e la sua sintassi è:

backup database {nome_database} to {elenco_dispositivi} with {elenco_opzioni}

dove {nome_database} è ovviamente il nome del database per il quale vogliamo fare il backup, {elenco_dispositivi} è la lista dei dispositivi di backup nei quali desideriamo venga effettuato il backup, ed {elenco_opzioni} rappresenta la lista delle opzioni specificabili per i diversi tipi di backup. Le principali opzioni sono:

  • SKIP – NOSKIP
  • INIT – NOINIT
  • FORMAT – NOFORMAT
  • NAME
  • DESCRIPTION
  • DIFFERENTIAL
  • UNLOAD – NOUNLOAD
  • CHECKSUM

L’opzione SKIP disabilita la scadenza del set di backup ed il controllo di nome, mentre l’opzione NOSKIP (che è quella predefinita se non viene specificato nulla) impone al backup di controllare la scadenza ed il nome dei set di backup prima di sovrascriverli.

L’opzione INIT è usata per sovrascrivere i dati esistenti sul supporto di backup, se è presente un backup non ancora scaduto l’opzione INIT fallisce, in questo caso per forzare la sovrascrittura usare in combinazione SKIP e INIT, la prima opzione disabilita la scadenza del backup e la seconda effettua la sovrascrittura. Invece NOINIT (predefinita se non specificato diversamente) aggiunge il backup a quello esistente (con conseguente aumento del file di backup, file con estensione .bak)

L’opzione FORMAT è usata per specificare un’intestazione sui file usati per il backup, se specificata su un supporto per nastro l’uso dell’opzione format prevede implicitamente l’uso delle opzioni SKIP ed INIT, se su file invece prevede solo INIT. Tutto il contrario vale per NOFORMAT.

L’opzione NAME specifica (messo tra virgolette, ad es. NAME=’da_produzione application_name ’) il nome da dare al set di backup che si sta effettuando

L’opzione DESC usata in maniera analoga a quella NAME permette di specificare una descrizione per il set di backup (sono le stesse opzioni che si sono descritte in Backup con Sql Server Management Studio dell’articolo precedente).

L’uso dell’opzione DIFFERENTIAL serve per specificare un backup di database differenziale, non specificandola il tipo di backup predefinito sarà quello completo.

Le opzioni UNLOAD e NOUNLOAD sono usate solo sui dispositivi a nastro e servono per dire a Sql Server di riavvolgere e scaricare il nastro o meno.

L’istruzione CHECKSUM specifica di eseguire una verifica di correttezza al termine del backup appena effettuato.

 

Backup LOG

Come è facile intuire questa istruzione serve per specificare un backup del log di transazioni, la sua sintassi è:

backup log {nome_database} to {elenco dispositivi} with {elenco_opzioni}

dove {nome_database} ed {elenco dispositivi} hanno lo stesso significato di quanto detto per sopra pocanzi, mentre l’elenco delle opzioni più importanti per il backup del log di transazioni è dato dalle stesse opzioni viste per il backup di database, ed in più prevede le opzioni:

  • NO_TRUNCATE

L’opzione NO_TRUNCATE serve per specificare che non si vuole che si tronchi il backup del log di transazioni, ovvero che il backup non elimini le transazioni completate nel log.

Vediamo un ipotetico esempio di dichiarazione Transact-SQL per specificare un backup di database completo su un dato dispositivo di backup su file:

BACKUP DATABASE [nome_databse] TO device_backup_db WITH INIT, NAME = 'nome_database backup’, DESC = ’Backup nome_database - Completo con sovrascrittura', SKIP, CHECKSUM

Se non abbiamo dichiarato un dispositivo di backup o vogliamo effettuarlo su un percorso differente, possiamo farlo specificando direttamente il path su disco dove andare a salvare il file di backup .bak, con l’istruzione TO DISK anziché TO, ad es. in questo modo:

BACKUP DATABASE [nome_database] TO DISK = 'C:\BACKUP\backup-db.bak' ... 

Con questo articolo chiudiamo la panoramica della nostra guida al backup con Sql Server, adesso ci resta solamente che spiegare come pianificare ed automatizzare il backup di database senza l’uso del servizio Sql Server Agent (non presente nella versione Express di Sql Server).

Il prossimo sarà quindi un articolo pratico, che concluderà la nostra guida sul backup con Sql Server, dove sfruttando proprio le dichiarazioni Transact-SQL per il backup viste in questo articolo, andremo ad implementare uno script che ci permetterà di pianificare ed automatizzare il backup di SQL Server senza l’uso del Sql Server Agent.

Categorie: database | Sql Server

Tags: , , , , ,

Pingbacks and trackbacks (1)+

Aggiungi Commento

biuquote
Loading