我有一个文件夹,每天都会生成日志。我想创建一个每天运行的SSIS包,并删除超过90天(基于创建日期)的文件。我已经使用脚本任务(C#)制定了一个解决方案,并想知道是否有更直接的方法(例如-SSIS任务)来实现这一点?
fae0ux8s1#
我已经使用脚本任务(C#)制定了一个解决方案,想知道是否有更直接的方法(例如-SSIS任务)来实现这一点?有一个名为"清理维护任务"的SSIS任务,它删除指定服务器上的备份文件或维护计划报表。清理维护任务包含一个选项,可以根据文件的创建日期删除文件夹中的特定文件或一组文件。
清理维护任务使用master.dbo.xp_delete_file系统存储过程删除满足任务配置中指定条件的文件。
master.dbo.xp_delete_file
建议不要使用维护清理任务,因为此任务不是为执行常规文件清理任务而开发的。它用于执行特定的SQL Server代理操作,即使用户可以指定他们需要清理的文件扩展名。此外,清理任务中仅支持一个级别的子文件夹。
遗憾的是,没有其他SSIS任务可以根据文件的创建日期或修改日期删除文件。您应该像以前一样使用脚本任务组件实现您的逻辑。此外,脚本任务(. NET框架)提供了许多在 * 维护清理任务 * 中不可用的功能,如遍历子文件夹、根据存储在元数据中的其他日期(上次修改日期)删除文件、删除多个文件扩展名、排除多个扩展名...您可以在脚本任务中编写所有逻辑(循环文件,删除文件)。或者,您可以使用脚本任务列出所有文件,然后将 * Foreach循环容器 * 与 * 文件系统任务 * 一起使用以删除文件,如下例所述:SQL Server Integration Services package to delete files from a Network or Local path based on date.
50pmv0ei2#
您可以在脚本任务中使用以下代码
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(); }
2条答案
按热度按时间fae0ux8s1#
我已经使用脚本任务(C#)制定了一个解决方案,想知道是否有更直接的方法(例如-SSIS任务)来实现这一点?
有一个名为"清理维护任务"的SSIS任务,它删除指定服务器上的备份文件或维护计划报表。清理维护任务包含一个选项,可以根据文件的创建日期删除文件夹中的特定文件或一组文件。
清理维护任务使用
master.dbo.xp_delete_file
系统存储过程删除满足任务配置中指定条件的文件。是否应使用"清理维护任务"?
建议不要使用维护清理任务,因为此任务不是为执行常规文件清理任务而开发的。它用于执行特定的SQL Server代理操作,即使用户可以指定他们需要清理的文件扩展名。此外,清理任务中仅支持一个级别的子文件夹。
如何删除SSIS中的文件?
遗憾的是,没有其他SSIS任务可以根据文件的创建日期或修改日期删除文件。您应该像以前一样使用脚本任务组件实现您的逻辑。
此外,脚本任务(. NET框架)提供了许多在 * 维护清理任务 * 中不可用的功能,如遍历子文件夹、根据存储在元数据中的其他日期(上次修改日期)删除文件、删除多个文件扩展名、排除多个扩展名...
您可以在脚本任务中编写所有逻辑(循环文件,删除文件)。或者,您可以使用脚本任务列出所有文件,然后将 * Foreach循环容器 * 与 * 文件系统任务 * 一起使用以删除文件,如下例所述:SQL Server Integration Services package to delete files from a Network or Local path based on date.
50pmv0ei2#
您可以在脚本任务中使用以下代码