SQL Server 的循环式自动备份代码,思路挺巧妙的,关键是了多人头疼的“磁盘空间不够”问题。逻辑上是每次做完整备份,一周一轮回,老文件自动覆盖,最多只保留 21 个备份文件,不管你运行多久,文件数都不会超标。
代码是干净的Transact-SQL,不依赖 SQL Server 2005 之后的那些 IS 服务,比较纯粹,放在 SQL Server 2000、2005、2008 里都能跑。执行起来不重,挺适合那种数据库比较大,但又不想天天手动清理备份的场景。
它的思路是这样:按固定时间做完全备份,比如每 10 小时一次;按照一周为单位来循环使用备份文件,比如周一 10 点有个文件,下个周一 10 点才会被覆盖。这样设计下来,哪怕备份频繁,磁盘空间也不会飞涨。
代码里有备注,如果你已有备份作业,也可以直接把那段备份逻辑贴进去。不想全套用也没关系,灵活性还挺高。要是你像我一样,手头有几个老项目,磁盘空间又经常告急,那这个方案可以说是挺省心的了。
对了,相关话题我也整理了一些,想扩展下可以看看:
如果你正好也在烦数据库备份太多又不敢删,不妨试试这个循环备份的办法,省事还挺安全的。