第二章 恢复
一、恢复机制
SQL Server在检查事务日志和采取相应措施时可保证数据库的一致性。恢复过程如下:从最后一个检查点开始检查事务日志,发现受约束的事务就将它们的改变写入数据库,发现不受约束的事务就删除它们。
二、校验备份使用
RESTORE HEADERONLY(关于备份组)、RESTORE FILELISTONLY(关于数据库文件和事务日志文件)、RESTORE LABELONLY(关于备份介质信息,如媒体集)、RESTORE VERIFY(验证备份组完整性和各备份设备的可读性)语句来了解备份组的相关情况。
三、备份前提
1) 执行EXEC sp_dboption database_name,’dbo use only’,true 2) USE master
3) 进行恢复之前执行事务日志的备份,以保证数据库的一致性。
四、具体操作
1.从完整的数据库备份还原
RESTORE DATABASE { database_name
@database_name_var } **必写 [ FROM < backup_device > [ ,...n ] ]
**最多64个,必写 [ WITH [ [ , ] FILE = { file_number
@file_number } ] **标识要还原的备份集 [ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [ ,...n ] **避免与现有文件冲突 [ [ , ] REPLACE ] **如希望用差异数据库备份中的数据替换现有数据库时使用,SQL Server将创建指定的数据库及其相关文件,删除现有的数据库 [ [ , ] { NORECOVERY
RECOVERY
STANDBY = undo_file_name } ] **指示还原操作不回滚任何未提交的事务。RECOVERY表示恢复时无事务日志备份或差异备份,或者是恢复最后一个事务日志备份。如果有事务日志备份或差异备份,则必须指定 NORECOVERY 或 STANDBY 选项 ] 例如: USE master RESTORE DATABASE testzy FROM backupzy,backupzy1 WITH FILE=5,RECOVERY
2.从差异数据库备份还原语法同上,只是选择NORECOVERY选项。为保证数据一致性,还需还原在差异备份生成之后所附加的事务日志备份。
3、从事务日志备份还原
RESTORE DATABASE { database_name
@database_name_var } **必写 [ FROM < backup_device > [ ,...n ] ] **最多64个,必写 [ WITH [ [ , ] { NORECOVERY
RECOVERY
STANDBY = undo_file_name } ] **指示还原操作不回滚任何未提交的事务。RECOVERY表示恢复时无事务日志备份或差异备份,或者是恢复最后一个事务日志备份。如果有事务日志备份或差异备份,则必须指定 NORECOVERY 或 STANDBY 选项 [ [ , ] STOPAT = { date_time
@date_time_var } **指定将数据库还原到其在指定的日期和时间时的状态。] 例如:USE master RESTORE LOG DATABASE testzy FROM backupzy,backupzy1 WITH FILE=6,RECOVERY,STOPAT=’ May 27, 2002 04:20 PM’
4、从文件或文件组备份还原为保证数据一致性,还需还原在文件备份生成后所附加的事务日志备份。
RESTORE DATABASE { database_name
@database_name_var } { FILE=logical_file_name
FILEGROUP=logical_filegroup_name> } [ ,...n ] [ FROM < backup_device > [ ,...n ] ] 例如:USE master RESTORE DATABASE testzy FILE='testzy_Data' FROM backupzy,bakcupzy1 WITH NORECOVERY