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
- Create un file di testo vuoto
- Cambiategli nome in AskBackup.bat
- Editatelo e fate copia ed incolla dello lo script qui sotto
- Cambiate il percorso di destinazione dopo set PathPart=
- Cambiate il nome del database dopo set DBNAME=
- 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.