SQL Server中用日志恢复数据的操作是怎样的
Admin 2022-07-04 群英技术资讯 571 次浏览
这段时间看了关于在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的数据)
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“太早和太晚说明了事务日志间的不连续。这时要注意备份的时间和顺序。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
sql怎么创建约束?在SQL Server中有五种约束,分别是Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束。对于新手来说,不是很了解约束的创建和使用,对此,下面就给大家介绍一下。
sqlServer要想调用web接口,就要使用自带的存储过程。而这些存储过程2005版本以后默认时关闭的,所以要先开启。对SQLServer触发器调用JavaWeb接口的过程感兴趣的朋友一起看看吧
这篇文章介绍了SQL Server实现查询每个分组的前N条记录,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
CASE 表达式分为简单表达式与搜索表达式,本文就详细的介绍一下SQL CASE 表达式的具体使用,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
SQL AUTO INCREMENT 字段 Auto-increment 会在新记录插入表中时生成一个唯一的数字。 AUTO INCREMENT 字段 我们通常希望在每次插入新记录时自动创建主键字段的值。 我们可以在表中创建一个自动增量(auto-increment)字段。_来自SQL 教程,w3cschool编程狮。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008