通过日期从一个目录复制文件到另一个目录

问题描述:

我有这个SQL作业(在SQL Server 2005中)每六(6)小时创建一个备份,备份的文件名基于时间戳,以便它会创建一个唯一的文件名(dbname_yyyymmddhhmmss.bak),现在我的问题是,如果文件是三天,并基于我的脚本我想删除备份(.bak)是一个三天的旧我怎么知道使用xp_cmdshell。有人可以帮助我,在此先感谢。干杯!通过日期从一个目录复制文件到另一个目录

这是不是真的回答你的问题,但你可以直接在SqlServer的2005年与维护计划做到这一点(对象资源管理器 - >管理 - >维护计划)。

我通常会创建一个维护计划,其中包括两个任务:一个“维护清理任务”,在x天后删除旧备份,然后是“备份数据库任务”。

+0

这正是正确的答案。 – 2009-02-04 12:44:48

这不是一个真正适合xp_cmdshell的任务。在SQL Server中启用此功能也具有安全隐患。

您期望实现的内容更适合于SQL Server Integration Services(SSIS)。有可用于管理和执行备份的组件,以及可用于移动和删除数据的文件系统任务组件。

您可以使用文件系统任务,变量和表达式的组合来检索备份文件名,提取日期组件并确定文件的大小。然后您可以对该文件采取适当的措施。

我希望这可以帮助,但如果您需要更多的信息,请随时提出进一步的问题。

干杯,约翰

你可以编写一个.NET程序集并从SQL Server中调用它。编写它会相当容易,以便表值函数返回具有文件名和文件日期戳的特定目录中的所有文件。

我同意xp_cmdshell不是该作业的最佳选择。如果你和我一样,并且你不喜欢/信任维护计划,那么你可以编写一个C#控制台应用程序,其中文件系统支持比你在DOS中可以做得更强大(或者使用T-SQL来分析输出xp_cmdshell'DIR ...'),然后在Windows计划任务中进行安排,以便您不必担心从SQL Server服务/代理帐户升级特权。虽然把所有东西都放在一个包装里很好,但你并不总是希望那些改变你的油的人让你变成乳蛋饼。