设为首页 收藏本站
查看: 1598|回复: 0

[经验分享] Sql Server 备份文件管理(自动删除、过期)

[复制链接]

尚未签到

发表于 2015-7-2 10:51:53 | 显示全部楼层 |阅读模式
对于 Sql Server 备份文件的管理,是十分有讲究的,特别是对于磁盘空间不大或者DB服务器过多的管理员来说,真的比较难。同时也比较重要,因为如果不定时清理,磁盘肯定会满,也会导致新的备份无法进行。因为。当然,人工整理备份文件最好,但是却不智能。没办法,只能通过程序来做了。

1. 利用 管理计划(Maintenance Plans) 中的备份文件过期策略和 清除维护 来管理备份文件

a. 设置备份过期详情:

DSC0000.jpg

b.根据磁盘空间,自动覆盖过期备份(Maintenance Plans(维护计划) 中的 清除维护(Maintenance Cleanup) )

DSC0001.png

Maintenance Plans(维护计划)的详情请参阅:Maintenance Plans(维护计划)详解

2.  利用 job 和 T-Sql 来删除备份文件


这个做法很悲剧,为什么呢?因为上面方法的 job 被禁用掉了,我还说,为什么找不到原因不能删除文件,不认真啊,不过这种查找方法还是蛮能学习的,希望对大家有所帮助
首先,google 一下,却发现,删除 备份文件的都是 这段 SQL:
--删除过期的备份文件






declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DBtext\jgj\DBABak\'

set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str

虽然这段 SQL 能达到效果,但是却十分的弱智,十分的不智能


1. 这短Sql 要手工的输入备份文件磁盘地址,要拼参数,拼参数,通用性十分不好,对于不同的 DB,都要再次手工更改,非常不智能!
2. 不能智能的得到哪个备份过期了

之后,我就对这段 Sql 语句进行了改造,改造成了更通用,更智能的删除备份文件:




-- use the cursor to delete the expire bak

-- also could not user the cursor if you only want to delete the top 1 oldest bak

-- @filePath : the expire bak's path

declare fileCursor CURSOR for
SELECT * from
(
SELECT TOP 3 b.physical_device_name   
FROM [msdb].[dbo].[backupset] a,[msdb].[dbo].[backupmediafamily] b  
where a.media_set_id=b.media_set_id  and [expiration_date]0
group by(FollowID)
)
update Table1 set FollowCount=FollowCount+num
from #pager as p,Table3 c
where p.FollowID=c.ID

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-82478-1-1.html 上篇帖子: SQL Server Mobile 学习(三):SQL Server Mobile 远程数据访问(RDA) 下篇帖子: SQL Server 2008/2005不能修改表结构的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表