拯救你的数据 通过日志恢复MSSQL数据
作者:zping 发布时间:2024-01-16 13:36:10
这段时间看了关于在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“太早和太晚说明了事务日志间的不连续。这时要注意备份的时间和顺序。


猜你喜欢
- 微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号)声明•微信小程序开发工具类似于一个轻量级的IDE集成开发环境,
- 昨天在书友会上讨论信息分类和方法,有位朋友问:“大家现在讨论的还是几年前那套web2.0的东西,有没有一些新的东西可以分享?”我当时确实感觉
- python DataFrame的合并方法Python的Pandas针对DataFrame,Series提供了多个合并函数,通过参数的调整可
- 本文实例为大家分享了微信小程序实现侧边导航栏的具体代码,供大家参考,具体内容如下效果图wxml<view class='pro
- <% '#######以下是一个类文件,下面的注解是调用类的方法#########################
- 1. NumPy安装使用pip包管理工具进行安装$ sudo pip install numpy使用pip包管理工具安装ipython(交互
- HTTP头中一般断点下载时才用到Range和Content-Range实体头,Range用户请求头中,指定第一个字节的位置和最后一个字节的位
- 背景最近在搭一个新项目的架子,在生产环境中,为了能实时的监控程序的运行状态,少不了逻辑执行时间长度的统计。时间统计这个功能实现的期望有下面几
- 本文为大家分享了pygame游戏之旅的第6篇,供大家参考,具体内容如下定义一个障碍模型函数:def things(thingx, thing
- 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_mo
- 成功解决ValueError: Supported target types are: ('binary', 'mu
- 首先了解python对象的概念python中,万物皆对象,所有的操作都是针对对象的。 那什么是对象?5是一个int对象,‘oblong
- 本文研究的主要是Python进程间通信Queue的相关实例,具体如下。1.Queue使用方法:Queue.qsize():返回当前队列包含的
- 前言pandas处理时间的对象有很多,分别表示不同的作用。本次介绍固定时间对象和时间长对象。还是先导入包:import numpy as n
- 如下所示:def signal_xHz(A, fi, time_s, sample):return A * np.sin(np.linspa
- 1、算数运算符小例中: a = 5 &nb
- 用phpMyAdmin时在导入和导出MySQL5数据时,有一个SQL compatibility mode选项,其可选值为NONE、ANSI
- Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典.1.1 创建字典Python有两种方法可以创建
- 本文实例讲述了JSP使用MVC模式完成删除和修改功能的方法。分享给大家供大家参考。具体如下:目标:① 进一步理解MVC模式;② 掌握删除功能
- 自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优