我需要创建一个批处理文件来清除现有文件中的数据。基本上,SQL Server Management Studio 不会覆盖备份数据;因此,在运行备份并传输数据后,我需要使用批处理作业清除文件。
在批处理作业中我可以使用什么命令来删除现有文件的内容?
答案1
你绝对应该使用维护计划功能来进行备份。您可以轻松配置它,以便每次运行时创建新的备份文件(它会将完整的日期和时间附加到文件名末尾,例如mydb_backup_201106080006.bak
)。
维护计划的可能任务之一是维护清理任务用于删除不需要的 *.bak 和 *.trn(或任何其他)文件。精度(定义是否可以删除文件的时间间隔)是小时/天/周/月/年。
您可以插入Execute T-SQL Statement Task
在此类维护清理任务之前运行的命令。在那里(在执行 T-SQL 语句任务中),您可以执行外部命令来复制/压缩您的备份(例如EXEC master.dbo.xp_cmdshell 'C:\path\to\compress.bat
)。
我自己在我们仍在使用 SQL Server 2005 的服务器上执行此操作(使用 WinRAR 进行压缩)。SQL Server 2008 内置支持压缩备份文件(WinRAR 的压缩效果更好,但需要的时间更长)。
答案2
如果您要备份到文件设备,则在数据库备份任务屏幕上,选项选项卡上有一个单选按钮,可选择“覆盖所有现有备份集”。这将在每次运行时覆盖备份。
答案3
您如何备份数据?您的备份作业是否能够执行作业后脚本?如果是这种情况,您可以使用一个简单的 .cmd 和一个删除命令来删除目录中以备份扩展名结尾的所有文件。
否则,如果您的备份在某个时间之前完成,您可以使用 Windows 任务计划程序来运行删除批处理文件,但是我认为这里的关键是确保您的备份在删除文件之前成功完成。