如何删除SQL2005过期的数据库备份文件呢?
来源:互联网 发布:企业建站用什么cms 编辑:程序博客网 时间:2024/05/10 14:00
--如何删除SQL2005过期的数据库备份文件呢?
在SQL2005数据库中,不可以自动删除过期的备份文件,所以借用第三方插件完成此功能。
--方式一:通过Forfiles删除指定目录下过期的备份文件
/*--用法详解
D:/>forfiles/?
FORFILES [/Ppathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy-MM-dd |dd}]
描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。
参数列表:
/P pathname 表示开始搜索的路径。默认文件夹是当前工作的
目录(.)。
/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是'*'。
/S 指导forfiles递归到子目录。像"DIR/S"。
/C command 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。
默认命令是"cmd/c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回"TRUE";
如果是文件,返回"FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
要在命令行包括特殊字符,字符请以0xHH
形式使用十六进制代码(例如,x09为tab)。
内部CMD.exe命令前面应以"cmd/c" 开始。
/D date 选择文件,其上一次修改日期大于或等于(+),
或者小于或等于(-)用"yyyy-MM-dd"格式指定的日期;
或选择文件,其上一次修改日期大于或等于(+)
当前日期加"dd"天,或者小于或等于(-)当前
日期减"dd"天。有效的"dd"天数可以是
0 - 32768 范围内的任何数字。如果没有指定,
"+" 被当作默认符号。
/? 显示帮助消息。
例如:
FORFILES /?
FORFILES
FORFILES /P C:/WINDOWS /S /M DNS*.*
--显示C:/WINDOWS目录及子目录下DNS开头的所有文件名
FORFILES /S /M *.txt /C "cmd /c type@file | more"
--显示当前目录下所有TXT文件的内容
FORFILES /P C:/ /S /M *.bat
--显示C盘目录下及子目录下所有文件后缀名为bat的文件名
FORFILES /D -30 /M *.exe
--显示当前目录下修改日期小于等于天前的exe文件名
/C "cmd /c echo @path 0x09 在30前就被更改。"
--显示当前目录下所有文件的完整路径并在后面追加‘在30 前就被更改’的文字
FORFILES /D 2001-01-01
--显示当前目录下修改日期大于等于-01-01的文件名(含文件夹名)
/C "cmd /c echo @fname 在2001年月日就是新的。"
--显示当前目录下所有文件名并在后面追加‘在30 前就被更改’的文字
FORFILES /D +2009-8-18 /C "cmd /c echo@fname 今天是新的。"
--显示当前目录下修改日期大于等于-8-18的文件名并在后面追加‘今天是新的’的文字
FORFILES /M *.exe /D +1
--显示当前目录下修改日期大于等于明天的exe文件名
FORFILES /S /M *.doc /C "cmd /c echo@fname @fsize"
--显示当前目录及子目录下所有doc文件的文件名和文件大小
FORFILES /M *.txt /C "cmd /c if@isdir==FALSE notepad.exe @file"
--打开当前目录下txt文件,不含子文件。(注意变量isdir后面的FALSE必须为大写)
*/
目的:删除目录i:/sqldataup中天前的.bak文件:
步骤:
1、定义FORFILES批处理脚本如下:
C:/>FORFILES /P i:/sqldataup /M *.bak /C "cmd /Cdel /Q @path" /d -5
如果执行成功则返回当前盘符C:/>。
--如果没有需要删除的文件则返回信息错误: 用指定的搜索标准没有找到文件。比如:
--C:/>FORFILES/P i:/sqldataup /M *.bak /C "cmd /C del /Q @path" /d -5
--错误: 用指定的搜索标准没有找到文件。
2、通过计划任务调用批处理脚本如下图所示:
3、当然也可以用SQLAgent调用CMDEXEC完成批处理作业。
比如新建作业定时执行下面语句即可
/* --因为SQL2005默认是没有开启'xp_cmdshell'组件,开启方法如下
sp_configure'show advanced options',1
reconfigure
go
sp_configure'xp_cmdshell',1
reconfigure
go
*/
EXEC xp_cmdshell 'FORFILES /P i:/sqldataup /M *.bak /C "cmd /C del /Q@path" /d -5'
至于如何新建作业并利用SSIS包制定控制流,参考文章。
方式二:如果在SQL2008中因为默认安装Powershell 1.0程序,故可以用Powershell编写脚本来完成定时删除过期文件。
在windows中文站版主Anders的确认下,PS中脚本如下:
PS I:/> $Time= (get-date).AddDAYS(-7)
PS I:/> ri i:/sqldataup/*.bak | ?{$_.LastWriteTime=$Time}
- 如何删除SQL2005过期的数据库备份文件呢?
- 通过SQL存储过程删除过期的数据库Bak备份文件
- 通过SQL存储过程删除过期的数据库Bak备份文件
- 删除过期的日志和备份文件
- 定时删除过期备份文件
- 通过SQL存储过程删除过期的数据库Bak备份文件或其它文件
- sql2005维护计划删除备份文件
- Sql2000数据库的备份文件恢复到Sql2005的方法
- sql2005/2008 删除过期备份
- SQL删除数据库备份文件
- 如何删除备份文件
- ADO如何新增修改删除数据库的记录呢
- 关于SQL Server自动备份无法删除过期的备份文件奇怪现象
- sqlserver2008清除维护任务不能删除过期备份文件问题的解决
- vbs删除前一天数据库备份文件
- 怎样把SQL2005的备份文件导入到SQL2000的数据库中
- Sql2000的备份文件导入到sql2005中
- 数据库自动备份并删除30天前的备份文件
- web.xml 配置404和500错误的自定义页面
- Android UI 优化 [ 类别:Layout ] #1
- VMWare 6.5 安装Gentoo时使用SCSI硬盘注意事项
- 自己制作自认证得证书
- 提升进程权限
- 如何删除SQL2005过期的数据库备份文件呢?
- 网页中的颜色搭配
- 让程序不在任务栏上出现
- DOM的核心: Node
- Aapche+Resin+PHP+Mysql+Proftpd虚拟主机配置过程
- 如何将整站asp程序由gb2312转为utf-8编码
- 如何关闭移动硬盘和U盘的自动播放
- T+0交易技巧
- 予人快乐 自己快乐