从文件夹中删除超过 90 天的文件的最简单方法是什么?

问题描述 投票:0回答:3

我有一个文件夹,每天都会在其中生成日志。

我想创建一个每天运行的 SSIS 包,并删除超过 90 天的文件(基于创建日期)。我已经使用脚本任务(C#)制定了一个解决方案,并想知道是否有更直接的方法(例如 - SSIS 任务)来实现此目的?

sql-server ssis etl
3个回答
1
投票

我已经使用脚本任务(C#)制定了一个解决方案,并想知道是否有更直接的方法(例如 - SSIS 任务)来实现此目的?

有一个称为“维护清理任务”的 SSIS 任务,它“删除指定服务器上的备份文件或维护计划报告”。维护清理任务包括一个选项,用于根据创建日期删除特定文件或删除文件夹中的一组文件。 此任务是 SQL Server 代理维护计划任务,也可在 SSIS 中使用。

维护清理任务使用 enter image description heremaster.dbo.xp_delete_file 系统存储过程来删除满足任务配置中指定条件的文件。

我应该使用维护清理任务吗?

不建议使用

维护清理任务

,因为该任务不是为执行一般文件清理任务而开发的。它用于执行“特定的 SQL Server 代理操作”,即使用户可以指定他们需要清理的文件扩展名。此外,

清理任务仅支持一级子文件夹。

如何删除SSIS中的文件? 不幸的是,没有其他 SSIS 任务可以根据文件的创建或修改日期删除文件。 您应该像您已经做的那样使用脚本任务组件来实现您的逻辑。

此外,脚本任务(.NET框架)提供了许多

维护清理任务

中不可用的功能,例如遍历子文件夹、根据元数据中存储的其他日期(上次修改日期)删除文件、删除多个文件扩展名,不包括几个扩展名... 您可以在脚本任务中编写所有逻辑(循环文件,删除它们)。或者,您可以使用它列出所有文件,并使用

Foreach 循环容器

文件系统任务 来删除它们,如以下示例中所述:

SQL Server Integration Services 包从网络或本地路径中删除文件基于日期

您可以在脚本任务中使用以下代码 string dirname = @"D:\Path"; string[] files = Directory.GetFiles(dirname); foreach (string file in files) {FileInfo fi = new FileInfo(file); if (fi.LastWriteTime < DateTime.Now.AddDays(-7)) fi.Delete(); }


0
投票

您可以使用执行进程任务来代替使用脚本任务。下载 Delold.exe 并安装,它完全免费。将 .exe 文件保存在任意驱动器中,并在执行进程任务中添加一行命令: 可执行文件:C:\DelOld.exe(Delold.exe 文件的路径) 参数:/q /-c /n:2 D:*.* (命令将从 D: 驱动器中删除任何超过 2 天的文件。可以将 filexet 称为

.
.csv 等)
工作目录:C:\(与可执行文件相同)

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.