通过SQL存储过程删除过期的数据库Bak备份文件
1.先启用 xp_cmdshell 扩展存储过程:
GO
Exec sp_configure 'show advanced options', 1
GO
Reconfigure;
GO
sp_configure 'xp_cmdshell', 1
GO
Reconfigure;
GO
(注:因为xp_cmdshell是高级选项,所以这里启动xp_cmdshell,需要先将 show advanced option 设置为 1,便可显示高级配置选项。
可以通过语句
查看是否高级选项。
)
2.删除文件的存储过程:
Drop Proc sp_DeleteFiles
Go
Create Proc sp_DeleteFiles
(
@FilePath nvarchar(128),
@SearchPattern nvarchar(200),
@LastWriteTimeStart datetime,
@LastWriteTImeEnd datetime
)
As
Set Nocount On
Declare @Cmd nvarchar(2000),
@OutputInfo nvarchar(2000),
@Dir nvarchar(2000),
@Date datetime,
@FileName nvarchar(512)
Declare @Tmp Table(ID int Identity(1,1) Primary Key, OutputInfo nvarchar(2000))
Set @Cmd=N'Dir/A:-d/S/T:W/4 '+@FilePath+N'\'+Rtrim(@SearchPattern) /*Dos显示文件代码*/
Insert Into @Tmp
Exec xp_cmdshell @Cmd
Declare Cur_dir Cursor For
Select OutputInfo From @tmp Where Patindex('%\%',OutputInfo)>0 Or IsDate(substring(OutputInfo,1,10))=1 /*过滤只留目录和文件列表*/
Open Cur_dir
Fetch Next From Cur_dir Into @OutputInfo
While @@Fetch_Status = 0
Begin
If Patindex('%\%',@OutputInfo)>0 /*提取目录*/
Set @Dir=Substring(@OutputInfo,1,Len(@OutputInfo)-Charindex(Char(32),Reverse(@OutputInfo)))
Else
Begin
Set @Date=Substring(@OutputInfo,1,10)
If @Date Between @LastWriteTimeStart And @LastWriteTImeEnd
Begin
/*不同的环境,如在繁体系统,这里取文件名的处理方法可能不同*/
Set @OutputInfo=Stuff(@OutputInfo,1,17,'') /*过滤掉日期部分*/
Set @OutputInfo=Stuff(@OutputInfo,1,Patindex('%[0-9]%',@OutputInfo)-1,'') /*过滤掉前缀的空格部分*/
Set @FileName=Stuff(@OutputInfo,1,Charindex(Char(32),@OutputInfo),'') /*取得文件名*/
Set @Cmd=N'Del '+@Dir+N'\'+@FileName
Exec xp_cmdshell @Cmd,No_output
Print N'已删除文件:'+@Dir+N'\'+@FileName
End
End
Fetch Next From Cur_dir Into @OutputInfo
End
Close Cur_dir
Deallocate Cur_dir
Go
3. 测试:
/*
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_071101.exe
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080127.exe
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080326.exe
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080328.exe
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080504.exe
已删除文件: F:\test\Gao\高2009-8-14\B2000HR_FuXing_CHN_060406\HR_FuXing_080628.exe
*/
转载于:https://www.cnblogs.com/wghao/archive/2009/11/22/1608248.html
通过SQL存储过程删除过期的数据库Bak备份文件相关推荐
- 还原Sql Server数据库BAK备份文件的三种方式及常见错误
第一种方法,使用Sql Server Management Studio还原 这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别 右键点击数据库→还原数据库 在还原的源中选择源 ...
- 如何删除过期的数据库备份文件呢? .
通过 Forfiles 删除指定目录下过期的备份文件 /*-- 用法详解 D:/>forfiles /? FORFILES [/P pathname] [/M searchmask] [/S] ...
- linux定时备份mysql_linux定时备份MySQL数据库并删除七天前的备份文件
#!/bin/bash # Name:bakmysql.sh # This is a ShellScript For Auto DB Backup and Delete old Backup #备份地 ...
- 在Spring框架中使用SQL存储过程
Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...
- 关于SQL Server自动备份无法删除过期的备份文件奇怪现象
关于SQL Server自动备份无法删除过期的备份文件奇怪现象 关于SQL Server自动备份无法删除过期的备份文件 数据库服务器每天凌晨两点进行数据库备份,同时对5天前的数据库备份文件进行删除,不 ...
- 学习sql注入:猜测数据库_学习SQL:删除和更新数据SQL最佳实践
学习sql注入:猜测数据库 Deleting and updating data is very common, but if performed without taking care, which ...
- bak文件转换成sql文件_数据库bak文件转sql
Asp.Net 备份和恢复SQL SERVER 数据库 我们通常备份数据库时,需要登录数据库服务器去备份和恢复,这样很不方便,其实SQL SERVER自带的命令可能让我们很简单地实现远程通过Asp.N ...
- sql mysql 删除数据库_在sql中将已建数据库删除的详细步骤
上期为大家讲解的建立数据库的方法,这期小编为大家讲解在sql中将已建数据库删除的详细步骤,一起去下文看看吧. 今天主要针对的是在SQL Server中已将建立好数据库之后呢!我们这边对建立完毕的数据库 ...
- Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略
Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份.差异备份.日志备份).还原.删除.修改数据库等案例)之详细攻略 目录 数据库管理 ...
最新文章
- 武汉锅检所检测机器人_嵊州市管道cctv机器人-检测服务,武汉天仪ty333,诚信承诺...
- idea中build项目之后生成的target看不见
- [python]使用virtualenv处理python版本问题
- 深度学习《CNN架构续篇 - 正则化》
- Mybatis动态sql语句的生成
- php-fpm启动条件,php-fpm的启动、重启
- STM32F4 LTDC学习
- 8.1 异常(Exceptions)
- Android Metro风格的Launcher开发系列第一篇
- vofuria的开发(3)将vuforia引入新建立的工程
- 这么狠,私塾在线架构师系列课程全都免费发放
- Windows Server2012搭建Git服务器
- 有这么一种东西,员工深恶痛绝,老板们却喜爱有加
- excel合并多个工作表_EXCEL动态合并工作表,操作其实很简单
- Smartphone--Android真机管理平台
- 如何用妙记多 Mojidoc 设置子弹笔记
- SQL Compliance Manager Crack
- termux目录_Termux 入门与实践
- (SIP-1-话机注册)关于IP话机通过SIP协议注册到PBX电话交换机的全过程解析-如何看wireshark中的报文
- 一个小白轻松月入上万块的线上冷门项目
热门文章
- html表单验证元素必填,AngularJS表单验证:向用户指示必填字段
- leetcode算法题--Restore IP Addresses
- 计算机传票录入教案,传票翻打教案.docx
- 翻译:MariaDB DATABASE()
- scala------------:: , +:, :+, :::, +++的区别
- 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)
- 多个Finder方法的外部内容类型
- 【原拼】从/etc/inetd.conf学习服务(1)
- [转载]图像颜色转换-numpy/matplotlib/opencv区别
- C/C++ 32位/64位 sizeof(数据类型)