SQL Server 2014 提供恢复数据库的选项,尽管检测到错误。 重要的新错误检测机制是可选的备份校验和的创建,该校验和可由备份操作创建,并由还原操作验证。 可以控制操作是否检查错误,以及在遇到错误时是停止操作还是继续操作。 如果备份包含备份校验和,则 RESTORE 和 RESTORE VERIFYONLY 语句可以检查是否存在错误。
注释
镜像备份最多提供介质集的四个副本(镜像),提供备用副本,用于从损坏的介质引起的错误中恢复。 有关详细信息,请参阅镜像备份介质集(SQL Server)。
数据备份校验和
SQL Server 支持三种类型的校验和:页面校验和、日志块校验和以及备份校验和。 生成备份校验和时,BACKUP 会验证从数据库读取的数据是否与数据库中存在的任何校验和或撕裂页指示一致。
BACKUP 语句(可选)计算备份流上的备份校验和;在备份过程中,如果给定页面上存在页校验和或撕页信息,BACKUP 还将验证该页面的校验和、撕裂页状态以及页面的页 ID。 创建备份校验和时,备份操作不会向页面添加任何校验和。 页面在数据库中存在时进行备份,并且页面未通过备份进行修改。
由于验证和生成备份校验和的开销,使用备份校验和会产生潜在的性能影响。 工作负荷和备份吞吐量都可能会受到影响。 因此,使用备份校验和是可选的。 在决定在备份期间生成校验和时,请仔细监视产生的 CPU 开销以及对系统上任何并发工作负荷的影响。
BACKUP 永远不会修改磁盘上的源页和页面的内容。
启用备份校验和后,备份操作将执行以下步骤:
在将页面写入备份介质之前,备份操作会验证页面级的信息(页校验和或撕裂页检测),如果有的话。 如果两者都不存在,则备份无法验证页面。 未验证的页面将原封不动地包含,其内容将添加到整体备份校验和中。
如果在验证期间备份作遇到页面错误,备份将失败。
注释
有关页校验和和已撕裂页检测的详细信息,请参阅 ALTER DATABASE 语句的 PAGE_VERIFY 选项。 有关详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)。
无论是否存在页校验和,BACKUP 都会为备份流生成单独的备份校验和。 还原操作可以选择使用备份校验和来验证备份完整性。 备份校验和存储在备份介质上,而不是存储在数据库页上。 备份校验和可以选择在还原时使用。
备份集被标记为包含备份校验和(在 msdb..backupset 的 has_backup_checksums 列中)。 有关详细信息,请参阅 backupset (Transact-SQL)。
在还原操作期间,如果备份介质上存在备份校验和,则默认情况下,RESTORE 和 RESTORE VERIFYONLY 语句都会验证备份校验和和页校验和。 如果没有备份校验和,还原操作将继续进行而不会进行任何验证,因为没有备份校验和,还原无法可靠地验证页校验和。
备份或还原作期间对页面校验和错误的响应
默认情况下,遇到页面校验和错误后,BACKUP 和 RESTORE 操作将失败,而 RESTORE VERIFYONLY 操作将继续。 但是,您可以控制在遇到错误时,操作是失败还是尽可能继续进行。
如果备份操作在遇到错误后继续,此操作将完成以下步骤。
将备份介质上的备份集标记为包含错误,并跟踪 msdb 数据库中suspect_pages表中的页面。 有关详细信息,请参阅suspect_pages(Transact-SQL)。
记录 SQL Server 错误日志中的错误。
将备份集标记为包含此类错误(在 msdb.backupset 的 is_damaged 列中)。 有关详细信息,请参阅 backupset (Transact-SQL)。
发出一条消息,指出备份已成功生成,但包含页错误。
相关任务
启用或禁用备份校验和
在备份操作期间控制错误响应的方式
另请参阅
ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
backupset (Transact-SQL)
镜像备份媒体集 (SQL Server)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)