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:

Download file Zip – > AskBackup.zip

Esempio di creazione del file.bat contenente lo script di Backup

  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 Ecos           *
echo *                                                *
echo *            Script by ASK           *
echo *                                                *
echo ********************************
echo .
echo … salvataggio in corso, non chiudere!

 

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

 

echo *********************************
echo *    Compressione files DB    *
echo *********************************
7z a %ZIPFILENAME% %BACKUPFILENAME%
echo *********************************
echo *    eliminazione files.bak     *
echo *********************************
del /s /q /f %PathPart%*.bak
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

set ZIPFILENAME=%PathPart%%DatePart%-%DBNAME%.zip

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

7z a %ZIPFILENAME% %BACKUPFILENAME%

Comprime i file di Backup appena creato

del /s /q /f %PathPart%*.bak

Cancella il file.bak di Backup lasciando solo lo storico dei file ZIPPATI

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.