Skip to content

Instantly share code, notes, and snippets.

@bmatthewshea
Last active April 7, 2018 13:16
Show Gist options
  • Save bmatthewshea/5e530e28ba0aa4699a93253657b9659a to your computer and use it in GitHub Desktop.
Save bmatthewshea/5e530e28ba0aa4699a93253657b9659a to your computer and use it in GitHub Desktop.
SQLExpress simple CMD backup
:: sqlcmd command mostly taken from https://stackoverflow.com/questions/880487/sql-server-command-line-backup-statement
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set DATABASENAME=MyDatabase
set SERVERNAME=MYSERVER
set HOME=C:\Users\Administrator\Documents\Backup and Logs
call :dotimestamp
set BACKUPFILENAME=D:\SQLExpress-Backups\%DATABASENAME%-%TIMESTAMP%.bak
set LOGFILE=backup-sqlexpress-%DATABASENAME%.log
set LOG=%HOME%\%LOGFILE%
::
call :dotimestamp
echo %TIMESTAMP% -- BACKUP DATABASE -- >> "%LOG%"
echo. >> "%LOG%"
call :dotimestamp
echo %TIMESTAMP% STARTING MSSQLEXPRESS Backup for Database: %DATABASENAME% >> "%LOG%"
echo. >> "%LOG%"
call :dotimestamp
echo %TIMESTAMP% EXECUTE: sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT" ^>^> "%LOG%" >> "%LOG%"
echo. >> "%LOG%"
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT" >> "%LOG%"
call :dotimestamp
echo %TIMESTAMP% Backup Script Completed. >> "%LOG%"
:endrun
exit /b
:sleep
:: ~10 second delay
ping 127.0.0.1 -n 10 > nul
goto :eof
:dotimestamp
:: Example output: 2018-04-25_08.31.24 (YEAR-MONTH-DAY_HOURS.MINUTES.SECONDS)
set timestring=%TIME: =0%
for /f "tokens=1-3 delims=:." %%a in ("%timestring%") do set hours=%%a&set minutes=%%b&set seconds=%%c
set TIMESTAMP=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%_%hours%.%minutes%.%seconds%
goto :eof
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment