2

我每天早上 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 服务器 2008 R2

4

2 回答 2

1

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

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

改编自这个答案。按照我上面编写批处理文件的方式,您需要将它放在与.bak文件相同的目录中。 请使用echofirst 而不是del.

要使其工作,您需要从Microsoft 的 FTP 站点forfiles.exe获取该实用程序并将其放置在您的目录中。C:\WINDOWS\system32

如果您真的想从 SQL Server 启动此命令,您可以使用xp_cmdshell过程运行删除旧项目的批处理文件。

于 2012-06-26T15:20:12.357 回答
0

您需要设置一个 cron 作业/计划任务来简单地删除任何超过 14 天的备份。

于 2012-06-26T15:15:01.593 回答