我有一个文件夹,每天都会在其中生成日志。
我想创建一个每天运行的 SSIS 包,并删除超过 90 天的文件(基于创建日期)。我已经使用脚本任务(C#)制定了一个解决方案,并想知道是否有更直接的方法(例如 - SSIS 任务)来实现此目的?
我已经使用脚本任务(C#)制定了一个解决方案,并想知道是否有更直接的方法(例如 - SSIS 任务)来实现此目的?
有一个称为“维护清理任务”的 SSIS 任务,它“删除指定服务器上的备份文件或维护计划报告”。维护清理任务包括一个选项,用于根据创建日期删除特定文件或删除文件夹中的一组文件。 此任务是 SQL Server 代理维护计划任务,也可在 SSIS 中使用。
维护清理任务使用 master.dbo.xp_delete_file
系统存储过程来删除满足任务配置中指定条件的文件。
我应该使用维护清理任务吗?
不建议使用维护清理任务如何删除SSIS中的文件? 不幸的是,没有其他 SSIS 任务可以根据文件的创建或修改日期删除文件。 您应该像您已经做的那样使用脚本任务组件来实现您的逻辑。
中不可用的功能,例如遍历子文件夹、根据元数据中存储的其他日期(上次修改日期)删除文件、删除多个文件扩展名,不包括几个扩展名... 您可以在脚本任务中编写所有逻辑(循环文件,删除它们)。或者,您可以使用它列出所有文件,并使用
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();
}
您可以使用执行进程任务来代替使用脚本任务。下载 Delold.exe 并安装,它完全免费。将 .exe 文件保存在任意驱动器中,并在执行进程任务中添加一行命令: 可执行文件:C:\DelOld.exe(Delold.exe 文件的路径) 参数:/q /-c /n:2 D:*.* (命令将从 D: 驱动器中删除任何超过 2 天的文件。可以将 filexet 称为
..csv 等) 工作目录:C:\(与可执行文件相同)