通过LDF文件实现日志回滚将数据恢复(转)
该方法数据库恢复(www.db-recovery.com)思路
- 1. 创建数据TEST
- 2. 创建表TEMP_01
- 3. 在表TEMP_01中插入100条数据
- 4. 备份现有的数据库
- 5. 再次向表TEMP_01中插入50条数据
- 6. 记录下当前正确数据的时间time1
- 7. 二分钟后模拟数据文件MDF损坏
- 8. 备份数据库尾日志
- 9. 将数据库恢复到time1 时间
/////////////////////////////////////////////////////////////////////////////////
操作步骤
1) 创建数据TEST
2) 创建表TEMP_01
(
ID [int] NOT NULL PRIMARY KEY,
NAME [datetime] NOT NULL,
ADDRESS varchar(50) NOT NULL
)
3) 在表TEMP_01中插入100条数据
declare @i int
set @i=1
while(@i<=100)
begin
INSERT INTO TEMP_01 VALUES (@i,getdate(),’ADDRESS ‘ + convert(varchar(50),@i))
set @i=@i+1
end
查看数据
4) 备份现有的数据库
--------做一次完整数据库备份
5) 再次向表TEMP_01 中插入50条数据
declare @i int
set @i=101
while(@i<=150)
begin
INSERT INTO TEMP_01 VALUES (@i,getdate(),’ADDRESS ‘ + convert(varchar(50),@i))
set @i=@i+1
end
查看数据
) 记录下当前正确数据的时间time1
当前时间为:2009-8-21 15:18:33
7) 2分钟后模拟数据文件损坏
停止SQL SERVER 服务 net stop mysqlserver
删除TEST.mdf 文件
新建文本文件,并重命名为:TEST.mdf
启动SQL SERVER 服务 net stop mysqlserver
数据库TEST无法打开,证明已损坏
备份数据库尾日志
启动 sqlcmd 管理工具
备份尾日志
解释一下no_truncate的作用:
如果数据库处于离线状态并且无法启动。
尝试执行尾日志备份。由于此时不会发生任何事务,所以 WITH NORECOVERY 是可选的。如果数据库受损,请使用
WITH CONTINUE_AFTER_ERROR 或 WITH NO_TRUNCATE。
BACKUP LOG database_name TO [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }
重要提示:
除非数据库受损,否则不建议使用 NO_TRUNCATE。
具体的用法参看MSDN
9) 将数据库恢复到time1时间
–恢复最后一次正常配置
在sqlcmd中执行如下语句进行恢复
restore log test from disk=’f:\db-recovery\aaaa.bak’ with recovery
解释一下 with norecovery 和 with recovery的作用
NORECOVERY
每当您准备对数据库继续执行还原操作时,请使用 NORECOVERY。NORECOVERY 使数据库进入还原状态。这确保了数
据库在尾日志备份后不会更改。
RECOVERY
将数据库从恢复状态改变到正常状态
具体参看MSDN
转自:http://www.db-recovery.com/tong-guo-ldf-wen-jian-shi-xian-ri-zhi-hui-gun-jiang-shu-ju-hui-fu.html
数据文件已经恢复!
最主要的一点就是在备份数据的时候要选择完整备份,步骤如下:选中要备份的数据库,右键——属性——选项——恢复模式——选中完整或大容量日志,即可(这是自己的观点,不知道对不对)
通过LDF文件实现日志回滚将数据恢复(转)的更多相关文章
- 日志回滚:python(日志分割)
日志回滚:python 什么是日志回滚? 答: 将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能.因此,有必要对日志文件按某种条件进行切分,要切分日 ...
- [原创]CentOS下Mysql的日志回滚
一. 环境: a) Centos-6.5-x64位操作系统. b) 安装mysql.命令:yum install mysql* 二. 配置 a) ...
- python logging模块日志回滚TimedRotatingFileHandler
# coding=utf-8 import logging import time import os import logging.handlers import re def logger(app ...
- python logging模块日志回滚RotatingFileHandler
# coding=utf-8 import logging import time import os import logging.handlers def logger(appname,roots ...
- python logging 实现的进程安全的文件回滚日志类
python标准库中的logging模块在记录日志时经常会用到,但在实际使用发现它自带的用于本地日志回滚的类 logging.handlers.RotatingFileHandler 在多进程环境下会 ...
- jenkins:一键回滚站点集群
最近在学习jenkins过程中整理了大量资料,都收录在<jenkins自动化工具使用教程>,但依然缺少一些具体实现细节. 这篇文章,介绍jenkins做集群回滚时的两个设计方案,让一键回滚 ...
- DataPipeline的增量数据支持回滚功能
DataPipeline的增量数据支持回滚功能 第一步:数据任务有增量数据时,回滚按钮激活,允许用户使用该功能进行数据回滚. 第二步:点击回滚按钮,允许用户选择回滚时间或者回滚位置进行数据回滚.选择按 ...
- Git 使用revert回滚已提交的commit
在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...
- 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚
1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...
随机推荐
- android实现弧形进度表盘效果
附件:Cirbar.rar
- nginx+tomcat动静分离的核心配置
#所有jsp的页面均交由tomcat或resin处理 location ~ .(jsp|jspx|do)?$ { proxy_set_header Host $host; proxy_set_head ...
- 代理模式及其在spring与struts2中的体现
代理模式 代理模式有三个角色组成: 1.抽象主题角色:声明了真实主题和代理主题的共同接口. 2.代理主题角色:内部包含对真实主题的引用,并且提供和真实主题角色相同的接口. 3.真实主题角色:定义真实的 ...
- VS2012 编译GDAL
先安装VS 2012, 然后下载GDAL最新版本代码,解压. 用管理员权限打开Developer Command Prompt for VS2012终端,进入代码目录. 然后运行命令: nmake / ...
- Upgrading Applications
Upgrading Applications If you have an existing Zend Framework v2 application, and want to update it ...
- AsyncTask的用法
在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行.在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只 ...
- [C++知识点]2015.4.18
1.“static_cast/强制转换”后普通函数.虚函数的表现 A基类 B子类 实例aPtr:将B实例强制抓换得到的A实例 实例bPtr:将A实例强制转换得到的B实例 总结: (1) aPtr因为是 ...
- 浅谈iOS中的视图优化
引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为 ...
- Hibernate中的"Repeated column in mapping for entity"异常
转:http://lijiejava.iteye.com/blog/786535 一对多双向关联(类Item与类Bid): Item类: public class Item { private int ...
- 优化sql,返回行数少情况下,NL比hash快好多
sql如下 select t.id, t.value, tt.sort as sortno from ENGINEERING_TYPE t left join ENGINEERING_TYPE tt ...