恢复模式是一个数据库配置选项,控制如何记录事务日志、事务日志是否需要备份以及数据库可用的还原操作。你为数据库选择的恢复模式,根据该恢复模式执行的或没有执行的日志记录,同时涉及数据恢复问题和性能问题。
学习目标:
n 能够解释各恢复模式间的区别
n 能够为每个SQL Server 2005数据库选择最佳的恢复模式
预计课程时间:10分钟
|
恢复模式综述
SQL Server 2005为数据库提供了三种恢复模式:完整、简单和大容量日志。这些模式决定了SQL Server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志。截断事务日志是删除已执行事务并把该日志空间让给新事务的过程。下面是每种恢复模式的定义。
n 在完整恢复模式下,数据库引擎把所有操作都记录到事务日志上,并且数据库引擎绝对不会截断日志。完整恢复模式能使数据库恢复到故障时间点(在SQL Server 2005 Enterprise版中,恢复到一个比这更早一些的时间点)。
n 在简单恢复模式下,数据库引擎最低限度地记录大多数操作,并在每个检查点之后截断事务日志。在简单恢复模式下,不能备份或还原事务日志。此外,也不能还原单独的数据页。
重要提示 简单恢复模式
简单恢复模式并不适合那些无法接受丢失最新更改的数据库。
n 在大容量日志模式下,数据库引擎对大容量操作(诸如SELECT INTO和BULK INSERT)进行最小记录。在这种恢复模式下,如果一个日志备份包含任何大容量操作,就可以使数据库恢复到日志备份的结尾,但不能恢复到某个时间点。大容量日志模式仅用于大容量操作期间。
如何配置恢复模式
在SSMS中的“数据库属性”页上可以查看为一个给定数据库指定的恢复模式,对此也可以通过查询sys.database目录视图,其基本语法如下所示:
SELECT name, recovery_model_desc FROM sys.databases
要配置一个数据库的恢复模式,可以进入SSMS中的“数据库属性”页,也可以使用ALTER DATABASE语句。
在SSMS中,通过执行下列步骤可以改变恢复模式。
1. 在SSMS的“对象资源管理器”下展开“数据库”节点。
2. 右击需要设置恢复模式的数据库,然后选择“属性”。选择“选项”页。
3. 这时就可以通过“恢复模式”下拉列表改变恢复模式,如图2.3所示。
图2.3 通过SSMS改变恢复模式
使用ALTER DATABASE语句配置恢复模式的基本语法如下:
ALTER DATABASE <database_name>
SET RECOVERY FULL | SIMPLE | BULK_LOGGED
如前所述,在生产环境下建议对数据库使用完整恢复模式,因为它提供了最可恢复的配置。如果通过大容量机制定期导入数据,则可以临时将数据库的恢复模式改变为大容量日志模式,以获得更好的大容量负载性能。然而,在导入过程结束以后,应将数据库恢复为完整恢复模式。
练习:改变数据库的恢复模式
本练习将数据库恢复模式改变为大容量日志,以获得大容量日志操作的良好性能,然后恢复到完整恢复模式。
1. 通过执行如下ALTER DATABASE语句,将AdventureWorks数据库的数据库恢复模式设置为大容量日志恢复模式。(在改变恢复模式前,对该数据库作完整备份。)
-- Note that you should create the C:"Backup folder at Operating
System level before running this backup.
BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"
AdventureWorks.Bak'
GO
--Change the Recovery Model to Bulk Logged
ALTER DATABASE AdventureWorks
SET RECOVERY BULK_LOGGED
2. 在执行大容量日志操作以后,输入并运行如下ALTER DATABASE语句,将恢复模式改回完整恢复模式,然后执行另一次完整的数据库备份,以备份刚刚装入的数据。
ALTER DATABASE AdventureWorks
SET RECOVERY FULL
--Perform a Full database backup
BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"
AdventureWorks.Bak'
GO
本课总结
n 恢复模式允许我们控制数据库引擎如何记录事务日志,可以对一个特定的数据库使用哪些还原操作。
n SQL Server提供了三个恢复模式:完整、简单和大容量日志。
n 完整恢复模式是默认的模式,而且也是推荐使用的模式,它记录所有的操作,能使数据库恢复到故障时间点。
n 简单恢复模式最低限度地记录大多数操作,它不允许我们备份或还原事务日志。
n 大容量日志恢复模式最低限度地记录大容量操作,主要供大容量操作期间临时 使用。
n 通过以下两个方法可以配置一个数据库的恢复模式:通过SSMS中的“数据库属性”窗口,或者使用T-SQL语句ALTER DATABASE。
课后测试
下列问题旨在巩固本课介绍的关键内容。如果喜欢用电子版的,可以参见配套CD。
提示 参考答案
这些题目的参考答案以及对每个选项的具体解释,参见本书后面的“参考答案”部分。
1. 下列关于恢复模式的说法,哪个是正确的?
A. 在简单恢复模式下,大多数事务被最低限度地记录到日志中
B. 在完整恢复模式下,大多数事务被最低限度地记录到日志中
C. 在大容量日志恢复模式下,所有事务都被记录到日志中
D. 在简单恢复模式下,所有事务都被记录到日志中
2. 下列哪种方式允许你改变数据库恢复模式?(选择所有正确答案)
A. sp_configure存储过程
B. SSMS中的数据库属性
C. ALTER DATABASE
D. CREATE DATABASE
3. 在简单恢复模式下,下列哪些恢复操作是不允许的?(选择所有正确答案)
A. 时间点恢复
B. 差异恢复
C. 完整恢复
D. 页恢复