日期:2014-05-18  浏览次数:20723 次

如何自动删除备份文件?
SQLServer2000中
用BACKUP   DATABASE做的完全备份和差异备份,然后用作业做成每天运行一次和每小时运行一次,要自动删除三天前的备份文件,应该如何做?

EXPIREDATE总是提示有错,RETAINDAYS虽然没有出错,但是不见删除文件
是通过这两个参数删除备份文件吗??如果不是应该如何处理?
如果是这两个参数还需要其他参数吗?


------解决方案--------------------
EXPIREDATE = { date | @date_var }

指定备份集到期和允许被重写的日期。如果将该日期作为变量 (@date_var) 提供,则可以将该日期指定为字符串常量 (@date_var = date)、字符串数据类型变量(ntext 或 text 数据类型除外)、smalldatetime 或者 datetime 变量,并且该日期必须符合已配置的系统 datetime 格式。

RETAINDAYS = { days | @days_var }

指定必须经过多少天才可以重写该备份媒体集。假如用变量 (@days_var) 指定,该变量必须为整型。


=============================
这两个参数只是表明备份的数据多少天后会过期, 它的空间可以被重写, 并不是删除.
------解决方案--------------------
在数据库维护计划生成的Job命令串中可以看到相应的语句,如:Del
------解决方案--------------------
这是偶用的方法:
--自动删除三天前的备份
declare @data_3ago nvarchar(50)
declare @cmd varchar(50)
set @data_3ago = 'e:\data\ '+convert(varchar(10),getdate()-3,112)
set @cmd = 'del '+ @data_3ago
exec master..xp_cmdshell @cmd
--自动备份
go--中间加一个go
declare @data nvarchar(50)
set @data= 'e:\data\ '+convert(varchar(10),getdate(),112)
BACKUP DATABASE job TO DISK = @data
with init