如何定期刪除備份文件

lliang0488 2003-10-10 10:28:05
我在 JOB 裡設置了每日以 databasename+date.bak 格式進行備份,在 setp 裡如下

declare @sql varchar(8000)
set @sql='backup database mis to disk=''d:\databack\mis\mis'
+rtrim(convert(varchar,getdate(),112))+'.bak'''
exec(@sql)

當有太多的備份文件時,我想能夠自動保留 15 天以內的備份文件,多余的讓系統自動刪除,不知 sql server 有沒有這個功能,謝了
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
darcychina 2003-10-10
  • 打赏
  • 举报
回复
可以使用bat 执行的 例如: a.bat

a.bat 内容:(delete 15 天以前的備份文件
isql -U sa -P -i c:\a.sql)

这个思路就ok 了
zjcxc 元老 2003-10-10
  • 打赏
  • 举报
回复
加在备份后面也可以,另建一个job也可以.


如果不止一个文件,就多次调用啊:

--例子:
--删除15天前备份文件的处理
set @sql='del d:\databack\mis\mis'
+rtrim(convert(varchar,getdate()-15,112))+'.bak'''
exec master..xp_cmdshell @sql

--删除其他文件,就是del命令的处理,只不过用xp_cmdshell调用而已
set @sql='del d:\databack\mis\mis2003*.bak'

lliang0488 2003-10-10
  • 打赏
  • 举报
回复
我是想刪除日期大於 date - 15 的文件,可能不止一個文件, 這些指令是不是加在備份數據庫的後面就可以呢,還是要另外建一個JOB呢,能否給出更具體一點的代碼
zjcxc 元老 2003-10-10
  • 打赏
  • 举报
回复
当然,要求你具有足够权限,可以执行xp_cmdshell才行.
zjcxc 元老 2003-10-10
  • 打赏
  • 举报
回复
调用xp_cmdshell删除就行了:

declare @sql varchar(8000)
set @sql='backup database mis to disk=''d:\databack\mis\mis'
+rtrim(convert(varchar,getdate(),112))+'.bak'''
exec(@sql)

--下面是删除15天前备份文件的处理
set @sql='del d:\databack\mis\mis'
+rtrim(convert(varchar,getdate()-15,112))+'.bak'''
exec master..xp_cmdshell @sql
viptiger 2003-10-10
  • 打赏
  • 举报
回复
declare @delFile varchar(100)
declare @cmdDel varchar(200)
set @delFile = @databasename(你数据库的名字)+convert(varchar(10),dateadd(dd,-7,getdate()),120)+'.bak'

set @cmdDel='del '+ @LocalPath(文件存放目录) +@delFile
exec master..xp_cmdshell @cmdDel


这样调用xp_cmdshell 直接运行windows指令就可以了删除了,只是个例子,你自己再看看改一下,以便适用你的。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧