SQL Server2005数据恢复总结

    前段时间9月24日因为本身的误操做误删除了SQL Server2005数据库一个表的数据...人生第一次误删数据!当时紧张恐慌而后胃疼...最终在同事的帮助下经过完整备份和事务日志备份恢复了,为了搞明白原理趁着想学的劲上网学习,根据本身的理解作了笔记和实验,供你们参考,有问题多多指教。
sql


一.SQL Server经常使用备份策略

1.完整备份+日志备份数据库

2.完整备份+差别备份+日志备份服务器

 

二.事务日志相关说明

1. SQL Server 把事务日志文件划分为多个VLF(Virtual LogFile),即虚拟日志文件ide

2.虚拟日志文件是能够从新使用的空间的单位。只能截断仅包含不活动日志记录的虚拟日志文件。不能截断事务日志的活动部分(“活动日志”)学习

3.事务日志是一种回绕的文件。当建立数据库时,逻辑日志文件从物理日志文件的始端开始。新日志记录被添加到逻辑日志的末端,而后向物理日志的末端扩张。测试

4.经过删除不活动的虚拟日志文件来释放逻辑日志中的空间。spa

 

三.数据库的三种恢复模式

1.完整模式:可以利用事务日志让数据库恢复到出故障时间点或指定时间点命令行

2.大容量日志:数据库日志不记录对数据修改的时间能够恢复到故障点 效率高可是没法恢复到指定时间点3d

3.简单:经过覆盖重复利用不活跃的逻辑日志文件  不能利用日志还原rest

 

:当选用完整恢复模式时,若是历来没有对数据库进行完整备份,数据文件会增加可是事务日志文件不会增加,由于事务日志不知道起点,因此会经过覆盖重复利用已有的日志文件,若是执行过完整备份后,以后的日志都会保留,事务日志就会增加

 

 

四.建立备份设备名称

1.命令行建立

use master

go

exec sp_addumpdevice 'disk','备份设备名称','实际备份路径,例:e:\test.bak'


2.图形建立

经过点击服务器对象而后点击备份设备来建立


3.使用

backup database test to 备份设备名称

restore database test  from 备份设备名称

 

五.sql server备份常使用的相关命令

1.数据备份

backup database test to disk='d:\test.bak'


2.事务日志备份

backup log test to disk='d:\test.bak'

 

3.查看备份中的文件以及备份的类型等详细信息

restore headeronly from  disk='d:\test.bak'

 

4.命令行使用完整和事务日志还原

restore database test fromdisk='d:\test,bak' with file=1,replace,norecovery

restore log test from disk='d:\test,bak'with file=2,replace,norecovery

restore log test from disk='d:\test,bak'with file=3,recovery


5.还原指定时间点

restore log test from disk='d:\test,bak'with file=3,recovery,stopat='2015-09-30 15:31:000'

 

6.参数含义:

file:表示要恢复数据文件的位置

replace:表示覆盖现有数据库

norecovery:表示还原后没有提交的事务不进行回滚,即还有可能要继续使用事务日志还原

Differential: 表示使用差别备份

init:表示进行覆盖已经有的备份文件

noinit:表示进行追加已经有的备份文件(默认)

 

7.截断事务日志命令

backup log test with no_log

截断后能够手动收缩日志文件

截断并不减少物理日志文件的大小,减少日志文件的物理大小须要收缩文件。

事务日志备份会截断日志,释放了不活跃的VLF 增长了日志的可用空间

注:手动截断事务日志必定要谨慎!注意备份操做!


8.查看在线事务日志信息

select * from SYSFILES

它的文件后缀名通常是.LDF


 9.差别备份的命令

backup database test to disk='d:\test.bak'with Differential

六.结尾日志

“结尾日志备份”捕获还没有备份的任何日志记录(“结尾日志”),以防丢失所作的工做并确保日志链完整无缺。在将 SQL Server 数据库恢复到其最近一个时间点以前,必须先备份数据库的事务日志。结尾日志备份将是数据库还原计划中相关的最后一个备份。



七.模拟数据误删除后用完整和事务日志恢复到指定时间点

1.建立测试用的数据库和表

建立测试库命名为test

create database test

建立测试表命名为test

use test

create table test (id int, name varchar(10))

2.模拟1号时间在插入两条数据后执行完整备份

insert into test values (1,'zhangsan')

insert into test values (2,'lisi')

backup database test to disk='c:\backup\test.bak' with init

:想利用事务日志恢复到指定时间点,数据库的恢复模式必须是完整模式

3.模拟2号时间在插入第三条数据后执行事务日志备份

insert into test values (3,'wangwu')

backup log test to disk='c:\backup\test_log1.bak'

4.模拟 3号时间在插入第四条数据后误删除操做

insert into test values (4,'zhaoliu')

drop table test

:插入数据的时间和删除操做的时间点要记清楚,为了实验操做方便最好间隔几分钟


5.删除操做后若是在原有数据库进行还原操做会有下图中提示,必须先把日志尾部作备份

wKioL1YWI5fAPWxAAARIQFcrPSM467.jpg

6.备份日志尾部

use master

backup log test to disk='c:\backup\test_log2.bak'with norecovery


7.备份文件的相关信息

wKiom1YXSP3B_3YxAAH5GBRyqIY308.jpg


8.使用完整备份进行还原

wKioL1YXSUvReiOCAAOa7K6PIyQ772.jpg

wKiom1YXSTODGf2fAAOdT_M-qCs785.jpg

wKioL1YXSU3z4fo_AAOHAQz7iUE980.jpg



 wKiom1YWI-GCehIxAADC9Dr3oQA618.jpg


9.使用事务日志还原到模拟的2号时间当天的数据

wKiom1YXSXKhmGkuAAMH-P2HMTU084.jpg

wKioL1YXSYuDyjlqAAKYEEH6sP4117.jpg

wKiom1YXSXSz-JF2AAOVU112KOM022.jpg



10.利用尾部日志还原到模拟的3号时间执行DROP操做前的时间点


wKiom1YXSbCT-7A1AANh8aF9Rvo540.jpg

wKioL1YXScnSI00rAAKTTw6E73Q048.jpg

wKiom1YXSbLw-_MCAAOZUcqMgLk412.jpg

wKiom1YWJKuwo_HBAACqLSswudY789.jpg


11.查询恢复的数据

wKioL1YXSfvCH1M0AAJP-I--abI089.jpg

注:为了演示备份的这个过程,我把完整备份和事务日志备份以及尾部日志备份的恢复操做分开来操做的,固然也能够用上面提到的命令恢复更快更方便。我这里用的测试机直接进行备份恢复模拟的实验来讲明原理,实际工做须要根据实际状况,最好不要直接在生产数据库上作恢复操做

相关文章
相关标签/搜索