(4.35)sql server清理过期文件【转】
在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 } }
————————————————
版权声明:本文为CSDN博主「吉普赛的歌」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yenange/article/details/51424523
分类:
MSSQL dba开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南