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

b5lpy0ml  于 2023-01-01  发布在  其他
关注(0)|答案(2)|浏览(211)

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

fae0ux8s

fae0ux8s1#

我已经使用脚本任务(C#)制定了一个解决方案,想知道是否有更直接的方法(例如-SSIS任务)来实现这一点?
有一个名为"清理维护任务"的SSIS任务,它删除指定服务器上的备份文件或维护计划报表。清理维护任务包含一个选项,可以根据文件的创建日期删除文件夹中的特定文件或一组文件。

    • 此任务是SQL Server代理维护计划任务,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.

50pmv0ei

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();              
        }

相关问题