这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。

前提条件:

数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项

如果是简单模式: 类似下面的语句操作数据就不会记录到日志中:  select * into t from [表名]

这时为保证数据的完整要将数据库的恢复模式改成“完整”

测试环境:

1,建立数据库和测试表

create database zp

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

插入测试数据:

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的可视化操作,下面是生成的代码:

BACKUP DATABASE [zp] TO  DISK = N'C:\k.bak' WITH NOFORMAT, NOINIT,  
NAME = N'zp-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

查看数据:

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

这时可能一不小心删除了一些数据。我们模拟一下:(假定删除了1,2的数据)

delete from [zping.com] where (id=1 or id =2)

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

这时发现删除错误了,怎么把数据找回来啊。方法有两个:

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

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

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

第二个方法必须停止数据库或者再另一个数据库恢复(前提是必须有一个完全备份和日志备份)

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

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

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

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

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

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

   注意:通过事务日志还原数据库,必须选择"不回滚"事务

   确定后:出现下面情况:

 

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

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

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

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

总结

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

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

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

转载于:https://www.cnblogs.com/chenbg2001/archive/2012/03/09/2388281.html

通过日志恢复MSSQL数据例子相关推荐

  1. 通过日志恢复MSSQL数据案例

    今天做了个从日志来恢复数据的案例,已经成功,下面把过程帖出来和大家分享, 前提条件是数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项 1.创建一个数据库test 创建时间为2006-11 ...

  2. 使用MySQL的binlog日志恢复误删数据

    使用binlog日志恢复误删数据 1.查看binlog是否开启并锁表 # 进入mysql mysql -uroot -proot#查看binlog是否开启 show variables like '% ...

  3. MYSQL专题-使用Binlog日志恢复MySQL数据

    大家有没有碰到过由于误操作把测试数据库的一张表给删除了,导致测试的数据都被删除了,然后手足无措,测试把你一定数落,顿时感觉自己要死了?今天就教你即使误删了也可以将删除的数据恢复,以后误删再也不用惊吓了 ...

  4. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  5. mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据

    事情是这样的:由于个人粗心,在7月30号那天协助其它部门批量更新一些数据,谁知道全局更新了,而这个问题竟然在9月26号才发现告知我.他们要求把更新有误的数据恢复到7月30号之前状态,并且7月30号到9 ...

  6. 通过日志恢复SQL Server的历史数据

    园子里前段时间发过一篇通过日志恢复MSSQL数据例子 ,我总结一下 通过日志还原,最重要的是: 1.必须有一个完整的备份,且这个备份必须是在修改.删除数据之前做的. 2.在更新.删除数据之后,做日志备 ...

  7. mysql日志恢复数据_Mysql 通过binlog日志恢复数据

    Binlog日志,即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日 ...

  8. MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...

  9. MySQL二进制binlog日志说明以及利用binlog日志恢复数据

    MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...

最新文章

  1. linux svn磁盘空间满,Linux svn checkout时候总报设备上没有空间
  2. [转载] 七龙珠第一部——第110话 加油 孙悟空
  3. c语言第一课程序代码怎么打,【北北的小程序】北のC语言第一课:helloworld
  4. 2、MapReduce的job提交启动过程
  5. 开发第一个Meeting App
  6. 01-图像ROI区域获取
  7. Spring中AOP切面编程学习笔记
  8. Kafka 监控 Kafka Eagle 精简版本
  9. 调试acf 遇到的问题
  10. saltstack学习笔记
  11. java中Field中的方法,解析Java中的Field类和Method类
  12. viper4android还用酷狗,viper4windows_viper4android_viper4蝰蛇音效
  13. TunesKit Video Cutter for mac(视频分割编辑器)
  14. hbuildx制作app链接mysql_HBuilder制作的APP怎么连接SQLServer数据库,求大神指点一下,谢谢了!...
  15. 微信小程序:二维码DIY背景美化生成器
  16. 第3章第10节:如何压缩幻灯片中的图片素材 [PowerPoint精美幻灯片实战教程]
  17. 注册服务号、订阅号流程
  18. 解决导出CSV文件乱码的问题
  19. 树莓派4b安装Android10
  20. 转载--苹果是怎么吃到的?——职业规划,从了解自己开始

热门文章

  1. 在计算机桌面上添加小工具日历,实用桌面小工具时钟日历在win7中的添加方法...
  2. ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令
  3. 计算机逻辑判断函数函数知识点,计算机考点条件检测函数IF
  4. Spring 依赖注入的实现
  5. Java反射机制API
  6. 4乘4方格走的路线_苏州周边4个冷门自驾游路线景点推荐
  7. 蒙特卡罗模拟法 —— matlab
  8. java search 不能使用方法_java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段...
  9. c#ovalshape_【原创】C# 实现拖拉控件改变位置与大小(SamWang)(附源代码下载)
  10. unity3d android aar,Android Stuido导出AAR 给Unity3D调用注意事项