MSSqlServer COPY_ONLY备份

发布时间 2023-06-16 15:57:09作者: 悠哉大斌

为了了解如何操作“COPY_ONLY”选项及其性质,让我们考虑以下示例。假设完整数据库备份每天在 00:00 开始一次,差异备份每6小时开始一次。在下图中,您可以看到图片中显示的每个数据库备份中包含哪些数据库更改(标记为页面)

假设需要进行额外的完整数据库备份才能在另一台服务器上检索它。假设此备份是在数据库更改 #4 之后完成的。如果在没有 T-SQL 选项“COPY_ONLY”的情况下进行完整备份,则在此类完整备份之后进行的差异备份将不再包含更改 #1、#2、#3 和 #4:

上图显示,在数据库更改 #4 之后进行的完整备份中断了用户设置的备份计划(标记为绿色箭头)。根据计划在 12:00 和 18:00 进行的以下两个差异备份完全依赖于最后一个额外的完整备份(标记为红色箭头)。如果未保存数据库更改 #4 之后进行的最后一个完整数据库备份,并且发生数据库故障,则最佳方法是将数据库还原到数据库更改 #3 状态 (06:00)。所有以红色突出显示的更改都将丢失。

要进行完整的数据库备份,从而确保备份计划安全无虞,必须使用“COPY_ONLY”选项。在这种情况下,数据库备份序列不会中断,完整备份将可用。

仅复制事务日志备份
也可以COPY_ONLY事务日志备份一起使用此选项(请注意,它们适用于完整或大容量日志恢复模式)。如果需要进行额外的事务日志备份并且不中断备份链,请使用“WITH COPY_ONLY”选项,否则如果备份文件丢失,还原过程将无法进行。必须承认,“WITH NO_TRUNCATE”选项也不会截断事务日志。

如何进行仅复制备份
要进行仅复制备份,只需在备份数据库命令中添加“COPY_ONLY”子句:

BACKUP DATABASE your_database TO DISK = 'full.bak' WITH COPY_ONLY

进行仅复制备份的另一种方法是使用SQL Server Management Studio(SSMS):右键单击要备份的数据库,选择“任务”,然后选择“备份...”。选择类型选项为“完整”,选中“仅复制备份”复选框,添加备份目的地,然后单击“确定”。

翻译自 https://sqlbak.com/academy/copy_only_backup