Ecco un semplice batch per automatizzare il backup dei database Microsoft SQL Server, particolarmente utile per le versioni Express. Per chi di voi è particolarmente pigro ecco cosa fare:

  1. Create un file di testo vuoto
  2. Cambiategli nome in AskBackup.bat
  3. Editatelo e fate copia ed incolla dello lo script qui sotto
  4. Cambiate il percorso di destinazione dopo set PathPart=
  5. Cambiate il nome del database dopo set DBNAME=
  6. Salvate e fate doppio click su AskBackup.bat

@echo off echo *********************** echo *
*
echo * Backup Db By ASKWEB * echo *
*
echo ***********************

set DatePart=%date:~6,4%-%date:~3,2%-%date:~0,2%
set PathPart=C:\BackupDB\ set DBNAME=DB
set BACKUPFILENAME=%PathPart%%DatePart%-%DBNAME%.bak
sqlcmd -E -S LOCALHOST -d master -Q “BACKUP DATABASE [%DBNAME%] TO DISK = N’%BACKUPFILENAME%’ WITH INIT , NOUNLOAD , NAME = N’%DBNAME% backup’, NOSKIP , STATS = 10, NOFORMAT”

echo *****************************
echo * eliminazione vecchi files *
echo *****************************
FORFILES /P %PathPart% /D -15 /C “cmd /c del @file”

Per chi invece ci vuole capire qualcosa ecco l’analisi del funzionamento:

set DatePart=%date:~6,4%-%date:~3,2%-%date:~0,2%

Crea una variabile d’ambiente che contiene la data attuale in formato yyyy-mm-dd

set PathPart=C:\BackupDB\

Crea una variabile d’ambiente che contiene il percorso nel quale verranno contenuti i backup set DBNAME=DB Crea una variabile d’ambiente che contiene il nome del database da salvare

set BACKUPFILENAME=%PathPart%%DatePart%-%DBNAME%.bak

Assembla il nome completo del file di destinazione del backup e lo memorizza in una variabile d’ambiente

sqlcmd -E -S LOCALHOST -d master -Q “BACKUP DATABASE [%DBNAME%] TO DISK = N’%BACKUPFILENAME%’ WITH INIT , NOUNLOAD , NAME = N’%DBNAME% backup’, NOSKIP , STATS = 10, NOFORMAT”

Esegue il comando di backup vero e proprio.

Al posto di LOCALHOST è possibile specificare il nome del server.

In caso di istanza utilizzare -S NOMESERVER\NOMEISTANZA

FORFILES /P %PathPart% /D -15 /C “cmd /c del @file”

Cancella i file più vecchi di 15 giorni, in questo modo, variando il numero posso decidere quanti giorni di storico mantenere.

Daniele Serafini M.C.S.A.