完整数据库备份

完整数据库备份对整个数据库进行备份。这包括对部分事务日志进行备份,以便能够恢复完整数据库备份。完整数据库备份表示备份完成时的数据库。

注意注意

有关各种备份类型的概述,请参阅简单恢复模式下的备份在完整恢复模式下备份

数据库备份易于使用。完整数据库备份包含数据库中的所有数据。对于可以快速备份的小数据库而言,最佳方法就是使用完整数据库备份。但是,随着数据库的不断增大,完整备份需花费更多时间才能完成,并且需要更多的存储空间。因此,对于大型数据库而言,您可以用差异备份来补充完整数据库备份。有关详细信息,请参阅差异数据库备份

注意注意

针对数据库备份,TRUSTWORTHY 设置为 OFF。有关如何将 TRUSTWORTHY 设置为 ON 的信息,请参阅 ALTER DATABASE (Transact-SQL)

在简单恢复模式下使用数据库备份

在简单恢复模式下,每次备份后,如果出现严重故障,数据库将有可能丢失工作。每次更新都会增加丢失工作的风险,这种情况将一直持续到下一次完整备份。这时,工作丢失风险将变为零,并开始新一轮的工作丢失风险。

在简单恢复模式下,备份之间的工作丢失风险随着时间的推移而增加。下图显示了仅使用完整数据库备份的备份策略的工作丢失风险。

显示数据库备份之间的工作丢失风险

示例

下面的示例说明了如何使用 WITH FORMAT 覆盖任意现有备份并创建新媒体集,从而创建一个完整数据库备份。

-- Back up the AdventureWorks database to new media set.
BACKUP DATABASE AdventureWorks
    TO DISK = 'Z:\SQLServerBackups\AdventureWorksSimpleRM.bak' 
    WITH FORMAT;
GO

在完整恢复模式下使用数据库备份

对于使用完整恢复模式和大容量日志恢复模式的数据库而言,需要执行事务日志备份。下图显示了在完整恢复模式下可以使用的复杂性最小的备份策略。

序列完整数据库备份和日志备份

注意注意

如果有两个或更多必须在逻辑上保持一致的完整恢复模式数据库,则最好执行特殊步骤,以确保这些数据库的可恢复性。有关详细信息,请参阅使用标记的事务(完整恢复模式)

有关如何创建日志备份的信息,请参阅使用事务日志备份

示例

下面的示例说明了如何使用 WITH FORMAT 覆盖任意现有备份并创建新媒体集,从而创建一个完整数据库备份。然后,此示例将备份事务日志。在现实情况下,您必须执行一系列的定期日志备份。在此示例中,AdventureWorks 示例数据库必须设置为使用完整恢复模式。

USE master;
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
-- Back up the AdventureWorks database to new media set (backup set 1).
BACKUP DATABASE AdventureWorks
  TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' 
  WITH FORMAT;
GO
--Create a routine log backup (backup set 2).
BACKUP LOG AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak';
GO

创建完整数据库备份

完整数据库备份应在单个操作中创建,并通常计划为按设定的间隔执行。

创建完整数据库备份所要求的 BACKUP 语法是:

BACKUP DATABASE database_name TO backup_device

创建完整数据库备份

计划备份作业

使用差异数据库备份

数据库备份可作为差异数据库备份的“差异基准”。这样,即可用为数不多的一系列差异数据库备份来补充数据库备份。有关详细信息,请参阅使用差异备份差异数据库备份

使用完整数据库备份还原数据库

您可以通过将数据库从完整数据库备份还原到任意位置的方法一步完成整个数据库的重新创建。备份中包含了足够的事务日志,这使您能够将数据库恢复到备份完成的时间。恢复数据库后,将回滚未提交的事务。还原的数据库将与还原备份完成时的原始数据库状态相符,但不包含任何未提交的事务。

还原操作在指定目标创建数据库。如果指定位置已有数据库存在,还原操作将覆盖现有数据库。若不希望覆盖现有数据库,则为还原数据库指定另外的名称。

有关详细信息,请参阅执行数据库完整还原(简单恢复模式)执行数据库完整还原(完整恢复模式)