批处理备份SQL Server同一个实例里所有数据库

SqlServer同一实例备份所有数据库

【效果图展示】

在这里插入图片描述

【需求】

  1. SqlServer同一个实例存在多个数据库
  2. 系统数据库(‘master’,‘tempdb’,‘model’,‘msdb’,‘ReportServer’)不需要备份
  3. 手动配置系统设定3个时间点每天windows系统自动备份数据库
  4. 手动配置数据库存储的时间自定义
  5. 上述配置完毕后下次运行不需要手动二次配置需求参数
  6. 批处理打开有闪光效果

【代码展示】

@echo off
SETLOCAL enabledelayedexpansion
title SqlServer备份助手
::判断config文件是否存在
if exist config.ini  goto:sql 
if not exist config.ini  goto:loop 
cls
::SQL配置信息
:loop
::删除temp目录下的文件
del /q /s C:\Users\Administrator\AppData\Local\Temp\dblist.txt
del /q /s C:\Users\Administrator\AppData\Local\Temp\config.ini
del /q /s C:\Users\Administrator\AppData\Local\Temp\sql备份助手.BAT
cls
::44
echo.
echo.
color F
ECHO.
ECHO.                                                       
ECHO                            请 输 入 配 置 信 息        
ECHO.                                                                           
ping 127.1 -n 1 >nul
cls
::43
echo.
echo.
color E
ECHO.
ECHO.                                                       
ECHO                            请 输 入 配 置 信 息        
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::42
echo.
echo.
color D
ECHO.
ECHO.                                                       
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::41
echo.
echo.
color C
ECHO.                                                       
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::40
echo.
echo.
color B
ECHO                                                        ■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::39
echo.
echo.
color A
ECHO                                                      ■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::38
echo.
echo.
color 9
ECHO                                                    ■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::37
echo.
echo.
color 8
ECHO                                                  ■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::36
echo.
echo.
color 7
ECHO                                                ■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::35
echo.
echo.
color 6
ECHO                                              ■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::34
echo.
echo.
color 5
ECHO                                            ■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::33
echo.
echo.
color 4
ECHO                                          ■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::32
echo.
echo.
color 3
ECHO                                        ■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::31
echo.
echo.
color 2
ECHO                                      ■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::30
echo.
echo.
color 1
ECHO                                    ■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::29
echo.
echo.
color A
ECHO                                  ■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::28
echo.
echo.
color B
ECHO                                ■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::27
echo.
echo.
color C
ECHO                              ■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::26
echo.
echo.
color D
ECHO                            ■■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::25
echo.
echo.
color E
ECHO                          ■■■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::24
echo.
echo.
color F
ECHO                        ■■■■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::23
echo.
echo.
color 1
ECHO                      ■■■■■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::22
echo.
echo.
color 2
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                                                        ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::21
echo.
echo.
color 3
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                            请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::20
echo.
echo.
color 4
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                                                        ■                   
ping 127.1 -n 1 >nul
cls
::19
echo.
echo.
color 5
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■                   
ping 127.1 -n 1 >nul
cls
::18
echo.
echo.
color 6
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■
ping 127.1 -n 1 >nul
cls
::17
echo.
echo.
color 7
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■
ping 127.1 -n 1 >nul
cls
::16
echo.
echo.
color 8
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■
ping 127.1 -n 1 >nul
cls
::15
echo.
echo.
color 9
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■
ping 127.1 -n 1 >nul
cls
::14
echo.
echo.
color F
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■
ping 127.1 -n 1 >nul
cls
::13
echo.
echo.
color E
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■
ping 127.1 -n 1 >nul
cls
::12
echo.
echo.
color D
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■
ping 127.1 -n 1 >nul
cls
::11
echo.
echo.
color C
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■
ping 127.1 -n 1 >nul
cls
::10
echo.
echo.
color B
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::9
echo.
echo.
color A
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::8
echo.
echo.
color 9
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::7
echo.
echo.
color 8
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::6
echo.
echo.
color 7
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::5
echo.
echo.
color 6
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::4
echo.
echo.
color 5
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::3
echo.
echo.
color 4
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::2
echo.
echo.
color 3
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
::1
echo.
echo.
color 2
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■■■
ping 127.1 -n 1 >nul
cls
echo.
echo.
color F
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■      请 输 入 配 置 信 息        ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■■■

timeout -t 0 >nul
ping 127.1 -n 1 >nul	
echo.
echo.
SET /p "ip=请输入数据库IP地址: "
(ECHO %ip%) >> config.ini
echo.
SET /p "use=请输入数据登录名: "
(ECHO %use%) >> config.ini
echo.
SET /p "psd=请输入数据库密码: "
(ECHO %psd%) >> config.ini

::SET /p "dbname=请输入数据库名称:"
::ECHO %dbname% >> config.ini
echo.
echo ★★数据库备份路径示例★★
echo 若保存到D盘的dbbak文件夹下请输入d:\dbbak
echo.
SET /p "str=请输入数据库备份的路径: "
(ECHO %str%) >> config.ini
echo.
SET /p "stime=请输入数据库保存大于10天周期天数: "
(ECHO %stime%) >> config.ini
ping 127.1 -n 1 >nul
md %str%

::添加windows计划任务
schtasks /delete /F /tn  "sqldb01"
schtasks /delete /F /tn  "sqldb02"
schtasks /delete /F /tn  "sqldb03" 

::添加bat到temp目录下
for /f "delims=" %%i in ('"dir /a/s/b/on sql备份助手.BAT"') do (
set file=%%~fi
copy %%~fi C:\Users\Administrator\AppData\Local\Temp
)
cls

::schtasks /create /sc minute /mo 360 /tn "SQLBAK" /tr SQLBAK.bat
echo.
echo ★★数据库每天定时运行的时间设置示例★★
echo 若每天08:05运行,请输入08:05
echo.
set /p "attime01=请输入数据库定时保存时间(1): "
ping 127.1 -n 1 >nul
set /p "attime02=请输入数据库定时保存时间(2): "
ping 127.1 -n 1 >nul
set /p "attime03=请输入数据库定时保存时间(3): "
ping 127.1 -n 1 >nul
schtasks /create /sc DAILY /tn "sqldb01" /tr C:\Users\Administrator\AppData\Local\Temp\sql备份助手.BAT  /st %attime01%
ping 127.1 -n 1 >nul
schtasks /create /sc DAILY /tn "sqldb02" /tr C:\Users\Administrator\AppData\Local\Temp\sql备份助手.BAT  /st %attime02%
ping 127.1 -n 1 >nul
schtasks /create /sc DAILY /tn "sqldb03" /tr C:\Users\Administrator\AppData\Local\Temp\sql备份助手.BAT  /st %attime03%
ping 127.1 -n 1 >nul
cls

::SQL备份开始
:sql
echo.
for /f "delims=" %%a in (config.ini) do ( 
set /a n+=1
if !n!==1  SET ip=%%a
if !n!==2  SET use=%%a
if !n!==3  SET psd=%%a
if !n!==4  SET str=%%a
if !n!==5  SET stime=%%a
)
cls
COLOR C
echo. 
echo.
echo.
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■       数 据 库 开 始 备 份       ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■■■
timeout -t 1 >nul
::生成数据库所有的库名
sqlcmd -S %ip%  -U %use% -P %psd% -d"master" -Q"select name  from master.dbo.sysdatabases where name not in('master','tempdb','model','msdb','ReportServer') " -o dblistold.txt

::去dblist.txt里所有空格
(for /f "delims=" %%a in (dblistold.txt) do (
set "line=%%a"
set "line=!line: =!"
echo !line!
))>dblist.txt
ping 127.1 -n 1 >nul
del /q dblistold.txt
ping 127.1 -n 1 >nul
if exist C:\Users\Administrator\AppData\Local\Temp\config.ini  goto :beginsqlautobak
ping 127.1 -n 1 >nul
if not exist C:\Users\Administrator\AppData\Local\Temp\config.ini copy /y dblist.txt C:\Users\Administrator\AppData\Local\Temp\
if not exist C:\Users\Administrator\AppData\Local\Temp\config.ini copy /y config.ini C:\Users\Administrator\AppData\Local\Temp\

:beginsqlautobak
::--------------------------------------------------------------------------------------------------------------
goto :loop1                                                                                                                                                           
(set /p line1=&set /p line2=&set /p line3=&set /p line4=&set /p line5=&set /p line6=&set /p line7=&set /p line8=&set /p line9=&set /p line10=&set /p line11=&set /p line12=&set /p line13=&set /p line14=)<dblist.txt
:loop1
::--------------------------------------------------------------------------------------------------------------

timeout -t 1 >nul
::SQL数据保存指定天数 2019/4/6 22:14新增
set h=%TIME:~0,2%
if %h% leq 9 (Set h=0%h:~1,1%)
set yymmddhhmiss=%DATE:~0,4%年%DATE:~5,2%月%DATE:~8,2%日%h:~0,2%时%time:~3,2%分%time:~6,2%秒

::批量创建文件夹
for /f "eol=( skip=2 tokens=*" %%i in (dblist.txt) do md %str%\%yymmddhhmiss%\%%i
timeout -t 1 >nul

::数据库遍历备份[优化文件夹存储bak方式]

for /f "eol=( skip=2 tokens=*" %%i in (dblist.txt) do osql.exe -S %ip% -d master -U %use% -P %psd% -Q "backup database %%i to disk='%str%\%yymmddhhmiss%\%%i\%%i%yymmddhhmiss%.bak' with format,compression,init,skip,stats=1"
timeout -t 1 >nul

::去文件名所有空格
for /f "delims=" %%i in ('dir /s/b %str%\*.*') do (
    set "foo=%%~nxi"
    set foo=!foo: =!
    set foo=!foo: =!
    ren "%%~fi" "!foo!"
)

::------------------------------------------------------------------------------------------------------------------------
::拷贝bak
for /f "eol=( skip=2 tokens=*" %%i in (dblist.txt) do copy /y %str%\%%i.bak %str%\%yymmddhhmiss%\%%i\%%i%yymmddhhmiss%.bak
::------------------------------------------------------------------------------------------------------------------------

echo.
echo.
::删除N天前数据库bak文件
forfiles /p "%str%\%yymmddhhmiss%" /m "*.bak" /d -%stime% /c "cmd /c del /f @path"
cls

COLOR F
echo. 
echo.
echo.
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■       数 据 库 备 份 成 功       ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■■■ 
echo.            
timeout /t 2 >nul

::注释代码
goto :Notes

goto :eof 
:ss 
set aa=%1 
if %aa:~1,1%==( goto ji 
goto :eof 
:ji 
attrib -h -s %str%\%yymmddhhmiss%\%1 
rd/s/q %str%\%yymmddhhmiss%\%1 
timeout -t 1 >nul
:Notes

cls
COLOR E
echo.
echo.
echo.
echo.
echo.
echo.
echo.
ECHO                    ■■■■■■■■■■■■■■■■■■■
ECHO                    ■                                  ■
ECHO                    ■    程序运行完毕 窗口即将关闭     ■
ECHO                    ■                                  ■
ECHO                    ■■■■■■■■■■■■■■■■■■■
timeout -t 2 >nul
exit

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值