SQL2005学习(十二),使用日志文件恢复到故障点_title

如上图,我们周一对数据库进行完整备份,周二对数据库进行日志备份,周三还没有对数据库进行备份这时候数据库文件出现了问题,但是日志文件没有出现问题,那么我们就可以在数据库损坏的情况下备份日志文件,从而进行数据库还原。

 

如下图,我目前有一个zxta的数据库,在这个数据库中有一个档案表,这个表中目前没有任何数据

SQL2005学习(十二),使用日志文件恢复到故障点_border_02

 

我在档案表中插入50条“老三”记录

SQL2005学习(十二),使用日志文件恢复到故障点_style_03

 

插入50条老三的记录后我们对数据库进行备份,我们输入 backup database zxta to disk='D:\zxta.bak’

SQL2005学习(十二),使用日志文件恢复到故障点_border_04

 

如下图,备份成功

SQL2005学习(十二),使用日志文件恢复到故障点_target_05

 

备份成功后视图如下

SQL2005学习(十二),使用日志文件恢复到故障点_blank_06

 

完整备份成功后,我再次在档案表中插入 20条记录"老四",插入过程我不解图了,如下图,目前有70行

SQL2005学习(十二),使用日志文件恢复到故障点_title_07

 

我们在插入20条老四记录后后对数据库zxta进行日志备份,仍然备份到zxta.bak中,默认为追加不会覆盖以前的备份,我们输入 backup log zxta to disk='D:\zxta.bak'

SQL2005学习(十二),使用日志文件恢复到故障点_target_08

 

如下图,命令执行后备份成功

SQL2005学习(十二),使用日志文件恢复到故障点_target_09

 

在老四备份成功后,我们再次插入30条记录"老五",如下图,记录变成了100行

SQL2005学习(十二),使用日志文件恢复到故障点_style_10

 

现在数据库突然坏了,我们如果想搞坏数据库我们可以停止SQL服务,然后用把数据库以记事本形式打开,最后删除一些记事本中的数据即可,如下图,我删除里面一些记录

SQL2005学习(十二),使用日志文件恢复到故障点_title_11

 

如下图,重新启动SQL服务后,数据库zxta无法展开了,主要没有+号了,这样我们的数据库就挂了

SQL2005学习(十二),使用日志文件恢复到故障点_target_12

 

在数据库挂了的情况下,我们对zxta进行日志备份,需要加一个参数,如下图,我们备份成功

SQL2005学习(十二),使用日志文件恢复到故障点_target_13

 

下面我们就需要还原数据库了,在前面的备份中我们都备份到了d:\zxta.bak文件中,这个文件中的备份我们可以使用一个命令进行查看

SQL2005学习(十二),使用日志文件恢复到故障点_title_14

 

如下图,我们输入restore headeronly from disk='D:\zxta.bak’就可以查看里面有哪些备份,在备份类型中,1代表完整备份,2代表日志备份

SQL2005学习(十二),使用日志文件恢复到故障点_target_15

 

下面我们将使用命令来还原zxta数据库,依次输入1 ,2 ,3 这三条命令,然后先执行1,在执行2,最后执行3,其中with fie=就是序号

第一条命令用来恢复数据库,replace参数用来覆盖数据库,norecovery参数代表后面还需要使用日志进行恢复

第二条命令用来恢复日志,norecovery代表后面还需要日志进行恢复

第三条命令,因为后面没有日志了顾不需要norecovery参数

SQL2005学习(十二),使用日志文件恢复到故障点_style_16

 

如下图,执行完上面的命令后,我们再次查询档案表,发现有100条记录,最后都是老五,说明我们恢复成功

SQL2005学习(十二),使用日志文件恢复到故障点_title_17

 

刷新下数据库,发现zxta前面的+号 出现了

SQL2005学习(十二),使用日志文件恢复到故障点_blank_18

 

以上,我们就完成了使用日志文件恢复到故障点。