很早之前写的一个备份数据库的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 OFFecho 切换批处理运行路径为文件所处位置echo cd /d %~dp0del /s /q c:\tmp.txtecho 如果分区剩余容量小于5GBecho 将对本目录文件进行清理echo 保留含以本年本月命名的文件echo 如今天是2019年1月,则保留含201901的文件echo 保留.bat .txt .exe .dll文件freedisk /d d: 5GB|findstr "卷上没有指定的可用空间量" >>C:\tmp.txtfindstr "D" C:\tmp.txtecho %errorlevel%if %errorlevel%==0 goto delif %errorlevel%==1 goto bak:delecho 空间不足,将进行删除操作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:bakecho 空间足够,执行备份操作echo %errorlevel%echo. del /s /q tmp.txtgoto y:yecho 删除临时文件tmp.txtdel /s /q c:\tmp.txtecho 正在备份...@echo offecho . 隐藏 set path=%path%;C:\Program Files\Microsoft SQL Server\80\Tools\Binnset path=C:\Users\Administrator\Desktop\数据库自动备份echo 数据库备份开始 >> d:\任务计划完成记录.txtdate /t >> d:\任务计划完成记录.txttime /t >> d:\任务计划完成记录.txtisql.exe -S 192.168.1.15 -U sa -P -i backup.sqlecho 数据库备份完成 >> d:\任务计划完成记录.txtdate /t >> d:\任务计划完成记录.txttime /t >> d:\任务计划完成记录.txtecho .echo .echo . 数据库备份完成echo .echo .rem pauserem shutdown.exe -s -t 0rem pause
发表评论