用SQL作业实现删除过期文件
2016-05-16 13:45
351 查看
在SQL Server中, 一般是用维护计划实现删除过期文件。不过直接用脚本也是可以的,而且更灵活。
下面介绍三种方法, 新建一个作业, 在作业的步骤里加上相关的脚本就可以了。
下面介绍三种方法, 新建一个作业, 在作业的步骤里加上相关的脚本就可以了。
--1. xp_delete_file --优点:兼容性好 --缺点:不能删除SQL Server之外创建的文件,包括RAR --备注:维护计划中的“清理维护”也是调用此 扩展存储过程 来删除文件。 DECLARE @oldDate DATETIME SET @oldDate = GETDATE()-7 EXECUTE MASTER.dbo.xp_delete_file 0, --0: 备份文件,1: 维护计划文本报告 N'D:\database_bak\', --文件路径 N'bak', --文件扩展名 @oldDate, --在此时间之前的文件一律删除 1 --删除子文件夹中的文件 --2. xp_cmdshell --优点:非常灵活,可以删除任何类型的文件 --缺点:要求权限较大,开启后存在安全隐患 --备注:不推荐在 SQL Server 中使用。 DECLARE @directory NVARCHAR(50) --目录 DECLARE @days NVARCHAR(10) --保留多少天 DECLARE @extensions NVARCHAR(MAX) --扩展名 DECLARE @scripts NVARCHAR(4000) SET @directory=N'd:\database_bak' SET @days = N'7' SET @extensions = N'bak' SET @scripts=N'forfiles /p "'+@directory+'" /s /m *.'+@extensions+' /d -'+@days+' /c "cmd /c del @path"' EXEC xp_cmdshell @scripts --3. PowerShell --优点:非常灵活,可以删除任何类型的文件 --缺点:不适用于 SqlServer2005 --备注:在作业的步骤中,类型必须选择 "PowerShell"
$timeOutDay = 7 $filePath = "d:\database_bak" $allFile = Get-ChildItem -Path $filePath foreach($file in $allFile) { $daySpan = ((Get-Date) - $file.LastWriteTime).Days if ($daySpan -gt $timeOutDay) { Remove-Item $file.FullName -Recurse -Force } }
相关文章推荐
- 数据库抽象层PDO
- 程序猿都该知道的MySQL秘籍
- Oracle 软件及静默安装数据库
- django访问sqlserver2000——使用django-pyodbc
- Mysql数据库事务在jdbc中的用法
- 用mycat做读写分离:基于 MySQL主从复制
- 使用Jedis 访问redis集群遇到的两个小问题
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
- MySQL客户端程序及一些使用小工具介绍
- Linux下Oracle GoldenGate(OGG)的配置
- MongoDB的那些坑
- 【sql server】解决 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
- CentOS 6.5 下MySQL 5.7.12主从复制架构配置记录
- plsql、dblink连接Oracle数据库长时间空闲后自动断开及远程终端连接linux空闲超时后自动断开问题
- 实战~REDHAT 6.5 X64上安装ORACLE双机(ROSE-HA9.0)
- oracle 创建dblink
- MyBatis主流程分析之(三)-准备SQL语句和参数替换、执行
- mysql的启动
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题