sqlserver使用job删除过期备份文件

Posted San仟世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver使用job删除过期备份文件相关的知识,希望对你有一定的参考价值。

享下链接:http://blog.csdn.net/xieyufei/article/details/33770067
(注意这里主要说明怎么设置删除过期备份文件)

先说下sqlserver使用job删除过期备份文件总体思路:①备份数据库文件的时候命名要有规则,如:”PTM_WorkOrder_”+当前时间(年月日)+“_”+当前小时[强调一下:无论你命名规范是什么一定要带上时间]

             

②删除过期备份文件实质就是使用sql语句删除指定文件(这也是为什么备份文件命名要带上时间的原因)

接下来具体分享怎么删除过期备份文件:(1)这是job,我第一想法是修改job脚本更改更能,可惜水平有限(整体看不太懂,懵逼),在此提供一个简单的方式:点击该你要修改的job,查看properties

 

 

命令里就是job自动执行的sql语句(总体结构清晰的多了,看着不舒服的话可以查看job脚本)。

命令内容如下:

DECLARE @bakFile varchar(200),@delFile varchar(200),@str varchar(200),@strtest varchar(200);

SET @bakFile=\'C:\\Program Files\\MicrosoftSQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\\\Backup\\\\RRD_WORKORDER\\PMT_WorkOrder_\' + CONVERT(varchar(100), GETDATE(), 112) + +\'_\' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR(2)) + \'.bak\';

BACKUP DATABASE [RRD_WORKORDER] TO  DISK = @bakFile WITH NOFORMAT, NOINIT,  NAME = N\'RRD_WORKORDER-完整 数据库 备份\', SKIP, NOREWIND, NOUNLOAD,  STATS = 10;

 

SET @delFile = \'C:\\"Program Files"\\"Microsoft SQL Server"\\MSSQL10_50.MSSQLSERVER\\MSSQL\\\\Backup\\RRD_WORKORDER\\PMT_WorkOrder_\' + CONVERT(varchar(100), GETDATE()-3, 112) + +\'_\' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR(2)) + \'.bak\';

set @str=\'del \'+@delFile

exec master.dbo.xp_cmdshell @str

 

GO

  1. 备份的删除根据exec master.dbo.xp_cmdshell\'del D:\\test.txt\'演变过来
  2. CONVERT(varchar(100), GETDATE()-3, 112)获取3天前的时间(不就过期咯)。
    在此遇到一个坑分享下就是要删除的备份文件路径里面含有空格,解决办法就是在空格两边加双引号””,如上。

以上是关于sqlserver使用job删除过期备份文件的主要内容,如果未能解决你的问题,请参考以下文章

Win Server 2008 R2 怎么删除过期的备份

crontab定时任务打包备份文件并删除过期文件

gitlab自动备份

GitLab 数据自动备份

Windows 编写自动复制备份删除过期文件的定时任务脚本

怎么让SqlServer数据库备份自动定期的删除