2023年11月27日发(作者:)

51 SQL Server 2008备份和恢复概述

用户使用数据库是因为要利用数据库来管理和操作数据,数据对于用户来说是

非常宝贵的资产。数据存放在计算机上,但是即使是最可靠的硬件和软件也会出现

系统故障或产品故障。所以,应该在意外发生之前做好充分的准备工作,以便在意

外发生之后有相应的措施能快速地恢复数据库的运行,并使丢失的数据量减少到最

小。

51.1 数据库的备份操作和对象

数据库备份就是创建完整数据库的副本,并将所有的数据项都复制到备份集,

以便在数据库遭到破坏时能够恢复数据库。

对于计算机用户来说,对一些重要文件、资料定期进行备份是一种良好的习惯。

如果出现突发情况,比如系统崩溃、系统遭受病毒攻击等,使得原先的文件遭到破

坏以至于全部丢失,启动文件备份,就可以节省大量的时间和精力。

在备份数据库的时候,SQL Server会执行如下操作。

将数据库所有的数据页写到备份介质上。

记录最早的事务日志记录的序列号。

把所有的错误日志记录写到备份介质上。

SQL Server系统中,只有获得许可的角色才可以备份数据,分别是以下

几种。

固定的服务器角色sysadmin

固定的数据库角色db_owner

固定的数据库角色db_backupoperator

当然,管理员也可以授权某些用户来执行备份工作。

51.2 备份体系结构

SQL Server 2008提供了高性能的备份和恢复功能,用户可以根据需求设计自

己的备份策略,以保护存储在SQL Server 2008数据库中的关键数据。

SQL Server 2008提供了4种数据库备份类型:

完整数据库备份

完整数据库备份就是备份整个数据库。他备份数据库文件、这些文件的地址以

及事务日志的某些部分(从备份开始时所记录的日志顺序号到备份结束时的日志顺

序号)。这是任何备份策略中都要求完成的第一种备份类型,因为其他所有备份类

型都依赖于完整备份。换句话说,如果没有执行完整备份,就无法执行差异备份和

事务日志备份。

虽然从单独一个完全数据库备份就可以恢复数据库,但是完全数据库与差异备

份和日志备份相比,在备份的过程中需要花费更多的空间和时间,所以完全数据库

备份不需要频繁的进行,如果只使用完全数据库备份,那么进行数据恢复时只能恢

复到最后一次完全数据库备份时的状态,该状态之后的所有改变都将丢失。

差异数据库备份

差异备份是指将从最近一次完全数据库备份以后发生改变的数据。如果在完整

备份后将某个文件添加至数据库,则下一个差异备份会包括该新文件。这样可以方

便地备份数据库,而无须了解各个文件。例如,如果在星期一执行了完整备份,并

在星期二执行了差异备份,那么该差异备份将记录自星期一的完整备份以来已发生

的所有修改。而星期三的另一个差异备份将记录自星期一的完整备份以来已发生的

所有修改。差异备份每做一次就会变得更大一些,但仍然比完整备份小,因此差异

备份比完整备份快。

事务日志备份

尽管事务日志备份依赖于完整备份,但他并不备份数据库本身。这种类型的备

为了使恢复的文件与数据库的其余部分保持一致,执行文件和文件组备份之后,必

须执行事务日志备份。

51.3 恢复体系结构

SQL Server 2008包括3种恢复模型,其中每种恢复模型都能够在数据库发生

故障的时候恢复相关的数据。不同的恢复模型在SQL Server备份、恢复的方式和性

能方面存在差异,而且,采用不同的恢复模型对于避免数据损失的程度也不同。每

个数据库必须选择三种恢复模型中的一种以确定备份数据库的备份方式。

简单恢复模型

对于小型数据库不经常更新数据的数据库,一般使用简单恢复模型。使用简单

恢复模型可以将数据库恢复到上一次的备份。简单还原模型的优点在于日志的存储

空间较小,能够提高磁盘的可用空间,而且也是最容易实现的模型。但是,使用简

单恢复模型无法将数据库还原到故障点或特定的即时点。如果要还原到这些即时

点,则必须使用完全恢复模型或大容量日志记录恢复模型。

完全恢复模型

当从被损坏的媒体中完全恢复数据有着最高优先级时,可以使用完全恢复模

型。该模型使用数据库的复制和所有日志信息来还原数据库。SQL Server可以记录

数据库的所有更改,包括大容量操作和创建索引。如果日志文件本身没有损坏,则

除了发生故障时正在进行的事务,SQL Server可以还原所有的数据。

在完全恢复模型中,所有的事务都被记录下来,所以可以将数据库还原到任意

时间点。SQL Server 2005支持将命名标记插入到事务日志中的功能,可以将数据

库还原到这个特定的标记。

记录事务标记要占用日志空间,所以应该只对那些在数据库恢复策略中扮演重

要角色的事务使用事务标记。该模型的主要问题是日志文件较大以及由此产生的较

大的从存储量和性能开销。

大容量日志记录恢复模型

与完全恢复模型相似,大容量日志记录恢复模型使用数据库和日志备份来恢复

数据库。该模型对某些大规模或者大容量数据操作(比如INSERT INTOCREAT

E INDEX、大批量装载数据、处理大批量数据)时提供最佳性能和最少的日志使用

空间。在这种模型下,日志只记录多个操作的最终结果,而并非存储操作的过程细

节,所以日志尺寸更小,大批量操作的速度也更快。如果事务日志没有受到破坏,

除了故障期间发生的事务以外,SQL Server能够还原全部数据,但是,由于使用最

小日志的方式记录事务,所以不能恢复数据库到特定即时点。

在大容量日志恢复模式下,备份包含大容量日志操作的日志需要访问数据库中的

所有数据文件。如果数据文件不可访问,则无法备份最后的事务日志,而且该日

志中所有已提交的操作都会丢失。