Uno script per pianificare il backup su Sql Server Express senza l'uso del servizio Sql Server Agent

di: Giorgio Borelli - del: 07 December 2009
Filed Under: database, Sql Server

Sql Server pianificare il backup di database con uno script Transact-SQLNegli ultimi articoli abbiamo parlato ampiamente del backup di database sul sistema Sql Server, mettendo assieme una guida suddivisa in quattro parti. Lo scopo finale del nostro percorso era quello di pianificare ed automatizzare i backup dei database anche sulle versioni Express di Sql Server (gratuite), le quali non prevedendo il servizio Sql Server Agent erano limitate sotto questo punto di vista.

 

Anche se fortemente legato alla guida al Backup su Sql Server dei precedenti articoli, ho voluto appositamente dedicare un'articolo a parte per la realizzazione dello script per il backup, primo perchè andremo ad introdurre alcuni concetti nuovi (come l'utility SQLCMD) e in secondo per separare nettamente la parte teorica della guida e quella pratica per l'implementazione dello script per il backup spiegato in questo articolo.

 

Lo script di backup che andremo a realizzare, sfrutta le conoscenze acquisite nei precedenti quattro articoli intitolati "Guida al backup di database con Sql Server".

 

Gli strumenti di cui abbiamo bisogno per realizzare tutto ciò sono:

 

 

 

  • un'istruzione Transact-SQL
  • l'utility SQLCMD dell'ambiente di Sql Server
  • un file di batch
  • le operazioni pianificate di Windows

 

Non allarmatevi! analizziamo con calma questi quattro punti e, al termine dell'articolo vedrete come sia stato facile mettere appunto il nostro script per pianificare il backup, scavalcando così l'uso del servizio Sql Server Agent non presente nelle versioni Express.

 

 

L'istruzione Transact-SQL per il backup

Per realizzare il nostro script, per prima cosa ci serve una istruzione Transact-SQL per dire a Sql Server  quale tipo di backup fare e per quale database. Concentriamoci su un backup di database completo su disco (e non su nastro), prevedendo una sovrascrittura ed una verifica al termine della stessa. Apriamo allora il nostro Sql Server Management Studio e creiamo una nuova query, l'istruzione SQL che andremo a scrivere sarà del tipo:

 

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

 

L'istruzione prevede le opzioni INIT e SKIP, rispettivamente usate per sovrascrivere il backup esistente e per disabilitare la scadenza del set di backup. Inoltre si specifica un nome ed una descrizione (opzionali), ed infine è previsto il comando CHECKSUM per la verifica. Ovviamente bisogna sostituire il nome del proprio database e del proprio dispositivo di backup, e per le stringhe nome e descrizione specificare i contenuti appropriati.

 

Testiamo che la nostra query sia perfettamente funzionante e salviamola in una cartella apposita, ad es. sotto: "C:\SCRIPT_BACKUP\Query_Backup.slq"

 

Per chi volesse approfondire le istruzioni Transact-SQL per il backup può leggere il precedente articolo: "Guida al backup di database con Sql Server - 4° parte"

Per chi volesse approfondire l'uso del backup manuale tramite Sql Server Management Studio può leggere l'articolo: "Guida al backup di database con Sql Server - 3° parte"

 

NOTA: per effettuare il backup di più di un database su device differenti, possiamo ripetere l'istruzione sql specificando i nomi dei diversi db. Ogni istruzione deve essere terminata dal punto e virgola e quella successiva cominciare con la parola chiave GO, che dà inizio alla nuova istruzione sql una volta che quella precedente è terminata.

 

 

L'utility SQLCMD

La nostra query per il backup è pronta, ma come facciamo a lanciarla senza richiamarla da Sql Server Management Studio? In questo caso ci viene in aiuto l'utility SQLCMD dell'ambiente di Sql Server. L'utility SQLCMD presente dalla versione 2005 di Sql Server in poi, permette di lanciare le istruzioni Transact-SQL (ma anche system procedure e script sql) dalla riga di comando, la sua sintassi è:

 

sqlcmq {opzioni} [SERVER] {opzioni} [istruzione Transact-SQL / file.sql]

 

Quindi aprendo il prompt dei comandi, posizioniamoci sulla directory in cui abbiamo salvato la query di backup precedente e sfruttando sqlcmd scriviamo il comando:

 

SQLCMD -S [nome_server\nome_istanza] -i Query_Backup.slq

 

Analizziamo il comando, innanzitutto SQLCMD serve per richiamare l'utility, subito dopo troviamo l'opzione -S che serve per specificare il nome del server (basta un "." se è su server locale, come ".\nome_istanza") che può essere locale o su un altro computer in rete; dopodichè troviamo l'opzione -i che ci permette di specificare un file .sql che vogliamo venga eseguito anzichè scrivere direttamente l'istruzione sql sulla riga di comando, ed infine specifichiamo la query precedentemente salvata.

Anche questa volta testiamo che tutto sia in ordine, accertandoci di ottenere lo stesso risultato di backup eseguito lanciando la query d Sql Server Management Studio.

 

 

Il file di bacth per automatizzare l'istruzione sqlcmd del backup

A questo punto siamo nelle condizioni di lanciare la nostra query di backup direttamente dall'ambiente del Sistema Operativo (per l'esattezza da DOS), come fare quindi per automatizzare questa istruzione ed evitare di doverla riscrivere ogni volta al prompt dei comandi? Niente di più semplice, usiamo i cari e vecchi file batch, copiamo dunque su un file di testo l'istruzione con SQLCMD e salviamolo con estenzione .bat o .cmd (da Win NT in poi), spostiamo il file nella stessa directory in cui abbiamo salvato l'istruzione SQL per il backup

 

 

Le operazioni pianificate di Windows per pianificare il backup

Bene, il più ormai è fatto, avendo il file batch contenente al suo interno il comando SQLCMD per chiamare la query di backup, non ci resta che richiamarlo ogni qual volta ne abbiamo bisogno. Per pianificare questa operazione, possiamo avvalerci benissimo delle operazioni panificate di Windows, andiamo quindi sul pannello di controllo e richiamiamo le operazioni pianificate, si aprirà il wizard che ci guiderà passo passo nella messa appunto dell'operazione da pianificare, per i programmi da eseguire selezioniamo tramite il tasto sfoglia il file bacth che abbiamo preparato, dopodichè impostiamo i giorni e le ore in cui vogliamo che venga ripetuta l'operazione.

Sia dei file di batch che delle operazioni pianificate, ne abbiamo parlato nell'articolo: "Pianificare lo spegnimento del PC"

 

 

Eccoci così giunti al termine della realizzazione del nostro script, ho preparato un file zip contenente sia la query che il file batch, ovviamente devono essere entrambi aperti e corretti con i propri dati per poter funzionare correttamente, lo potete scaricare da qui: SCRIP-BACKUP-SQLSERVER.zip (665,00 bytes)

Per chi volesse approfondire l'intero argomento può leggere i post:

 

 

 

Lo script fin qui illustrato è utile ma non può di certo coprire ogni singola esigenza, quello che si voleva mettere in evidenza era la tecnica con cui aggirare la limitazione della versione Express di Sql Server che non permette di pianificare un backup di database poichè sprovvisto del servizio Sql Server Agent. Ognuno può personalizzare lo script come meglio crede, la migliore gratificazione per me sarà leggere i vostri commenti. Per qualsiasi dubbio, suggerimento o rettifica, non esitate a commentare sarò lieto assieme a voi di approfondire ulteriorermente l'argomento. 

 

Per seguire gli articoli di www.informaticando.net iscrivetevi al suo feed RSS

Comments (4) E-mail del.icio.us share su Facebookfacebook Permalink Post RSS   Bookmark and Share

Comments

4/11/2010 9:45:58 PM #

Pino

Ottima l'idea di utilizzare le operazioni pianificate di windows per aggirare la mancanza di Sql Server Agent nella versione Express di Sql Server.
Le operazioni pianificate sono oqualcosa che ho sempre considerato di scarsa utilità, invece mi hai fatto scoprire un ottimo modo per usarle.
Grazie!

Pino Italy | Reply

4/11/2010 10:11:20 PM #

Giorgio Borelli

Grazie, felice davvero che ti sia stato d'aiuto. In merito alle operazioni pianificate devo confessarti che anche io la pensavo come te alcuni anni di esperienza in meno fà Laughing ... invece hanno il loro perchè, e possono tornare utili in tante altre circostanze.

Giorgio Borelli Italy | Reply

7/30/2010 1:10:26 AM #

elektrikarske prace  dopyt

I really enjoyed reading your posts. They are all well written and informative. Congratulations on you achievement.

elektrikarske prace dopyt United States | Reply

7/30/2010 2:05:00 AM #

meniscus surgery

I appreciate. like the government and corporations. cash. By eating. fantastic. Performing research is the first.

meniscus surgery United States | Reply

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading





Tag cloud

Ultimi Commenti

Comment RSS

Most comments

meniscus surgery meniscus surgery
17 comments
us United States
meniscus surgery meniscus surgery
16 comments
us United States
meniscus surgery meniscus surgery
13 comments
us United States
SimplyHosting Review SimplyHosting Review
6 comments
us United States
user.anonimo user.anonimo
1 comments
it Italy
lingerie lingerie
1 comments
us United States
Kecia Fonceca Kecia Fonceca
1 comments
us United States
zemne prace ponuka zemne prace ponuka
1 comments
us United States
Gregory Despain Gregory Despain
1 comments
us United States
health insurance quotes health insurance quotes
1 comments
us United States