我们一直在 SQL Server 2012 上进行每晚备份作业,但它附加到.bak文件而不是覆盖,所以在谷歌搜索时我发现master.dbo.xp_delete_file
我注意到我可以在date参数之前一次删除多个备份
我想保留 3 天,因此删除如下:
declare @dt datetime
select @dt=getdate()-3
EXECUTE master.dbo.xp_delete_file 0,N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\',N'bak',@dt,1
Run Code Online (Sandbox Code Playgroud)
看起来一切正常,但是对于备份,我可以创建这样的文件名吗?(注意 CONCAT() 中的 @today )
declare today varchar(10);
SELECT @today=CONVERT(char(10), GetDate(),126);
BACKUP DATABASE perfMaster TO DISK = CONCAT('D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\perfMaster_',@today,'.bak'
WITH NOFORMAT, NOINIT,
NAME = N'Full Database perfMaster Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 20
Run Code Online (Sandbox Code Playgroud)
或者您使用什么方法来完成具有几天历史的备份?