当我删除完整备份时,我想删除删除该完整备份后变得无用的所有文件:具体来说,是在磁盘上仍存在的最早完整备份之前发生的差异备份和日志备份。有人有办法做到这一点吗(也许是 PowerShell 脚本)?
答案1
这是我为备份自动化编写的 T-SQL 脚本,该脚本会删除除指定数量的完整备份之外的所有备份以及在保留最早的完整备份之前创建的任何差异备份。它依赖于具有相同文件扩展名且文件名后附加有“_Diff”的差异备份。我也有一个用于日志文件的脚本。
删除完整/差异备份:http://www.sqlsoldier.com/wp/wp-content/uploads/Scripts/dba_DeleteDBBackups.sql 删除日志备份:http://www.sqlsoldier.com/wp/wp-content/uploads/Scripts/dba_DeleteLogBackups.sql
答案2
如果您创建了维护计划,则可以将备份任务包含在子计划中。在用于备份数据库(完整、差异、tlog 备份)的子计划中,您可以执行维护清理任务。对于每种备份类型,您可以指定要保留文件的时间。例如,您可以将所有备份保留 7 天。7 天后,baks 和 trns 可以/将被删除。
我相信这应该可以实现你的追求。
答案3
我为此使用了 CLR proc,将代码发布在http://sqlblog.com/blogs/merrill_aldrich/archive/2009/07/21/hole-in-your-backup-sequence.aspx
现在的 PowerShell 可能更好,但将 C# 代码移植到 PowerShell 也很简单