我在 MSQL Studio 中设置了一个作业,将我的所有数据库备份到特定文件。然后我获取该文件,对其进行压缩,并将其发送到备份设备。我目前希望每周自动完成整个过程。但是,我遇到了问题。我在 MSQL Studio 中创建的作业当前运行数据库的完整备份,但是,它不会覆盖旧数据。我一次又一次地使用向导,但无法弄清楚如何让我的进程覆盖旧文件。这样做的目的是节省服务器空间。
有人能帮我弄清楚如何让备份作业覆盖旧文件吗?
答案1
如果您使用维护计划向导创建作业,则单击跨一个或多个文件备份数据库选项一如果备份文件存在:下拉菜单将启用。将该菜单设置为覆盖这应该可以帮你搞定。
如果您已经创建了维护计划,请打开维护计划并编辑“备份数据库”任务。您应该会看到与我上面描述的相同的选项。
如果您为每个数据库创建一个文件,则无法使用 SQL 本机备份覆盖预先存在的备份文件。将为每个文件创建新文件。您必须编写脚本或使用支持此功能的第三方工具。
答案2
我们做过类似的事情,我们不想在过程完成之前覆盖服务器上唯一的备份。我们创建了一个备份作业,然后创建了一个使用 gzip (sql 2005) 压缩备份的作业,然后使用 forfiles 删除了旧的 gzip 备份。我们已经这样做了一段时间,没有任何问题。
forfiles 指南 http://technet.microsoft.com/en-us/library/cc753551%28WS.10%29.aspx
答案3
尝试 T-SQL 脚本 BACKUP DATABASE 语句 http://msdn.microsoft.com/en-us/library/ms186865.aspx
将数据库 SomeDB 备份到磁盘 = 'c:\backupdb.bak' 使用 INIT; 去
这会将数据库备份到单个文件并始终覆盖所有内容。
或者也许这个免费工具http://sqlbackupandftp.com/- 它创建一个 zip 文件,并且可以限制要保留的文件数量。