承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

解救你的数据 通过日志恢复MSSQL数据

管理员 2023-06-30 09:00:04 互联网圈 12 ℃ 0 评论 5354字 收藏

这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。
条件条件:
数据库的故障恢复改成非简单模式,去掉自动关闭和自动收缩两个选项    
如果是简单模式:类似下面的语句操作数据就不会记录到日志中:  select * into t from [表名]
这时候为保证数据的完全要将数据库的恢复模式改成“完全”
测试环境:   

1、建立数据库和测试表        

create database zp

create table [zping.com](
id int,
name varchar(20)
)

2、插入测试数据

insert into [zping.com](id,name)
values(1,’zping.com1′)
insert into [zping.com](id,name)
values(2,’zping.com2′)
insert into [zping.com](id,name)
values(3,’zping.com3′)
insert into [zping.com](id,name)
values(4,’zping.com4′)

备份数据库,可以通过sql server的可视化操作,下面是生成的代码:
[code]BACKUP DATABASE [zp] TO  DISK = N’C:\k.bak’ WITH NOFORMAT, NOINIT, 
NAME = N’zp-完全 数据库 备份’, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO[code]

查看数据:

注意:这时候我们做一个完全备份

这时候可能一不谨慎删除一些数据。我们摹拟一下:(假定删除1,2的数据)

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–>

deletefrom[zping.com]where(id=1orid=2)

注意:要记住大体的删除时间

这时候发现删除毛病了,怎样把数据找回来啊。方法有两个:

1、通过Log Explorer 查找进行恢复数据(我网站有此工具)

2、另外一种方法通过恢复日志(指定时间点恢复)来恢复数据。

说明:第一个方法可以在线操作。

第二个方法一定要停止数据库或再另外一个数据库恢复(条件是一定要有一个完全备份和日志备份)

这里我们来讨论第二中方法指定时间点恢复:

1、这时候对数据库事务日志做备份(注意,如果没做个数据库完全备份,是不能做事务日志备份的)

这时候新建一个数据库zp(将之前的数据库改名),恢复数据库

这时候我们看到,有两个还原的数据库备份,由于我对zp数据库备份了两次,两次的备份的数据文件都一样。这里我们选择最近时间的备份。

默许在数据库的设置以下:是追加到备份集里,所以会有两个备份,以下图:

同时,在”选项“里设置”不回滚“事务。

注意:通过事务日志还原数据库,一定要选择”不回滚”事务。

肯定后,出现下面情况:

这时候发现,数据库一直是”正在还原“,这时候还原数据库事务日志,

1、“常规”里选择时间,(刚删除的时间)

2、“选项”里将恢复状态设置为”回滚未提交“事务

肯定后,查询数据库,发现数据回来了。

总结:

1、这是一般大型网站数据安全的一个办法,由于数据库比较大(可能有几百G)数据,做一次完全备份时间很长,而且影响数据库服务器的性能,为保证数据安全,大多采取完全备份+事务日志备份来保证数据安全。例如:一天做一次或2天做一次完全备份,几个小时内做一第二天志备份。(固然可以用写一个job来实现)

2、如SQL server 2005里的镜像就是采取的这类事务日志同步的方法保证数据的同步。

3、如果恢复的日志数据出现”LSN“太早和太晚说明了事务日志间的不连续。这时候要注意备份的时间温柔序。

本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!

文章来源:丸子建站

文章标题:解救你的数据 通过日志恢复MSSQL数据

https://www.wanzijz.com/view/60992.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信