为每小时SQL作业添加保留时间?

时间:2012-06-26 15:07:45

标签: sql-server database sql-server-2008-r2

我每天早上7点到晚上7点之间每小时运行一次数据库备份,每个文件都有一个唯一的名称。有没有办法让我能以某种方式增加14天的保留时间?

DECLARE @FileName AS VARCHAR(120)
DECLARE @Date AS CHAR(19)
SET @Date = CONVERT(CHAR(19), GETDATE(), 120)
SET @FileName = N'\\10.250.145.26\hfnfs\Trans\Hourly\South_RP' + @Date + '.bak'
BACKUP DATABASE [South_RP] TO DISK =@FileName

文件名示例South_RP2012-06-26 11:00:00.bak

*编辑这是SQL Server 2008 R2

2 个答案:

答案 0 :(得分:1)

我不会使用SQL Server执行此操作。相反,我会设置一个运行批处理文件的计划任务,类似于以下内容:

cd /d "%~dp0"
forfiles -d-14 -m*.bak -c"cmd /c del @PATH\@FILE"

改编自this answer。我在上面编写批处理文件的方式,你会想把它放在与.bak文件相同的目录中。 请先使用echo而不是del进行测试。

要使其正常运行,您需要从Microsoft's FTP site获取forfiles.exe实用程序并将其放在C:\WINDOWS\system32目录中。

如果确实想要从SQL Server启动此命令,则可以使用the xp_cmdshell procedure运行删除旧项目的批处理文件。

答案 1 :(得分:0)

您需要设置一个cron作业/计划任务,以便删除任何> 14天的备份。