批处理自动备份mssql2000微软数据库

很早之前写的一个备份数据库的bat批处理,里面用到了isql.exe这个dos程序好像在mssql2000之后的版本就没有了(在2000版本中位于C:\Program Files\Microsoft SQL Server\80\Tools\Binn)。还用到一个freedisk程序用来计算剩余磁盘空间的。

执行该批处理后会判断d盘空间是否大于5GB,如果大于5GB会删除非当月的备份文件名(注意所有文件名必须是像2020010101012300这种以日期时间命名的文件才会按规则删除),然后调用isql.exe命令执行备份到backup.sql文件。因为这个批处理是很久之前写的,不保证现在还能用,也不保证程序可靠性,未充分测试前请勿用于生产环境!

@ECHO OFF
echo 切换批处理运行路径为文件所处位置
echo cd /d %~dp0
del /s /q c:\tmp.txt

echo 如果分区剩余容量小于5GB
echo 将对本目录文件进行清理
echo 保留含以本年本月命名的文件
echo 如今天是2019年1月,则保留含201901的文件
echo 保留.bat .txt .exe .dll文件
freedisk /d d: 5GB|findstr  "卷上没有指定的可用空间量" >>C:\tmp.txt


findstr  "D" C:\tmp.txt
echo %errorlevel%
if %errorlevel%==0 goto del
if %errorlevel%==1 goto bak

:del
echo 空间不足,将进行删除操作
set year1=%date:~0,4%
set day1=%date:~5,2%
set delfile=%year1%%day1%
@for /f "tokens=*" %%i in ('dir/b^|findstr /iv "%delfile% bak bat txt exe DLL .sql"') do 
@del "%%i"
goto y


:bak
echo 空间足够,执行备份操作
echo %errorlevel%
echo. del /s /q tmp.txt
goto y


:y
echo 删除临时文件tmp.txt
del /s /q c:\tmp.txt
echo 正在备份...
@echo off
echo . 隐藏 set path=%path%;C:\Program Files\Microsoft SQL Server\80\Tools\Binn
set path=C:\Users\Administrator\Desktop\数据库自动备份
echo 数据库备份开始 >> d:\任务计划完成记录.txt
date /t >> d:\任务计划完成记录.txt
time /t >> d:\任务计划完成记录.txt
isql.exe -S 192.168.1.15 -U sa -P  -i backup.sql
echo 数据库备份完成 >> d:\任务计划完成记录.txt
date /t >> d:\任务计划完成记录.txt
time /t >> d:\任务计划完成记录.txt
echo .
echo .
echo . 数据库备份完成
echo .
echo .
rem pause
rem shutdown.exe -s -t 0
rem pause

freedisk.exe下载地址(右键另存为)

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/bat-backup-mssql2000/

赞赏

微信赞赏支付宝赞赏

发表评论