sqlserver 过期备份自动覆盖的问题


 各位大侠,
有个SQLSERVER备份自动覆盖的问题想请教下, 
我想每天备份一个资料库(AAA)到"备份装置(backupDevice)",并设定备份的到期日为3天,过期后自动删除。 
我编写如下:
BACKUP DATABASE [AAA] TO  Disk='D:\AAA.bak' WITH  RETAINDAYS = 3, NOFORMAT, INIT,  NAME = N'First_Bank-完整 资料库 备份', NOSKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
在每天定点执行一次上面的代码后,系统会提示说“有某些备份档案尚未过期无法覆盖”,可是要用INIT才能覆盖,用NOSKIP才会检查有无到期。
那应该要怎么用才能把旧的备份档盖过去呢??

6 个解决方案

#1


试试:重点在: RETAINDAYS = 3
BACKUP DATABASE [tagl] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\tagl.bak' WITH  RETAINDAYS = 3, NOFORMAT, NOINIT,  NAME = N'tagl-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
GO

#2


引用 1 楼 DBA_Huangzj 的回复:
试试:重点在: RETAINDAYS = 3
BACKUP DATABASE [tagl] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\tagl.bak' WITH  RETAINDAYS = 3, NOFORMAT, NOINIT,  NAME = N'tagl-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
GO

 不行的,noinit会一直将备份集append到tagl.bak文件上

#3


sql server的备份集过期本身就是是否“可以覆盖”而已,你要自动删除的话,需要做一个维护计划,里面有清理过期文件的

#4


引用 1 楼 DBA_Huangzj 的回复:
试试:重点在: RETAINDAYS = 3
BACKUP DATABASE [tagl] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\tagl.bak' WITH  RETAINDAYS = 3, NOFORMAT, NOINIT,  NAME = N'tagl-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM
GO

不行的,noinit会一直将备份集append到tagl.bak文件上,在retaindays=3前提下,我使用了noinit/init,skip/noskip 4种有可能的组合,都没达到效果,不知道问题出在哪里了,是不是关键词不在noinit/init,skip/noskip 上? 

#5


最接近你要求的可能是这个了,我觉得你没必要非要把所有功能集成在一个语句里面,把备份和清理文件分开,另外几乎所有资料都不建议把备份加到同一个文件里面,即使覆盖,除非你用的是介质备份

#6


这个可以用维护计划来做的:

此外,还可以指定删除过期备份策略,比如,把10天前的备份删除,因为硬盘空间是有限的。

维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份
http://blog.csdn.net/sqlserverdiscovery/article/details/11020057
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告