SQL删除文件

前言:在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) - f i l e . L a s t W r i t e T i m e ) . D a y s i f ( file.LastWriteTime).Days if ( file.LastWriteTime).Daysif(daySpan -gt $timeOutDay)
{
Remove-Item $file.FullName -Recurse -Force
}
}

参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值