This little gem of a Batch program will backup ALL of your SQL databases. Just point it to the SQL Data Base in the MYDB variable.

Written for nightly use on WinServer 2003. I wrote this program because believe it or not, the only alternative was to purchase a $20k program with annual maintenance agreement.

Could have written program in REXX but liked idea of running it on any server without the REXX interpreter.

So here is my little DOS Batch program to do the same as a $20k backup program. It ran flawlessly for several clients over many years.

Download zip file

   SETLOCAL enableextensions
   REM --- Check If WMIC Service is Available ---
   WMIC.EXE Alias /? >NUL 2>&1 || GOTO S_EXIT
   REM --- Use WMIC to Retrieve Date and Time ---
     FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
       IF "%%~L"=="" GOTO SDONE
       Set _yyyy=%%L
       Set _mm=00%%J
       Set _dd=00%%G
       Set _hour=00%%H
       Set _minute=00%%I
   REM --- Pad Numbers with Leading Zeros ---
     Set _mm=%_mm:~-2%
     Set _dd=%_dd:~-2%
     Set _hour=%_hour:~-2%
     Set _minute=%_minute:~-2%
   REM --- Set into Date Var ---
     Set NowDate=%_yyyy%%_mm%%_dd%_%_hour%%_minute%
   REM --- Define VARS ---
     Set MPATH="C:\SQLBackup\%NowDate%"
   REM --- Build List of Databases to Backup ---
     SET DBList=%SystemDrive%SQLDBList.txt
     SqlCmd -E -S %MYDB% -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('master','model','msdb','tempdb')" > "%DBList%"
   REM --- Backup Database ---
     FOR /F "tokens=*" %%I IN (%DBList%) DO (
       ECHO Backing up database: %%I
       SqlCmd -E -S %MYDB% -Q "BACKUP DATABASE [%%I] TO Disk='C:\SQLBackup\%NowDate%\%%I.bak'"
   REM --- Delete Temp File
     IF EXIST "%DBList%" DEL /F /Q "%DBList%"