该方法数据库恢复(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

CREATE DATABASE TEST

2) 创建表TEMP_01

CREATE TABLE TEMP_01
(
ID [int] NOT NULL PRIMARY KEY,
NAME [datetime] NOT NULL,
ADDRESS varchar(50) NOT NULL
)

3) 在表TEMP_01中插入100条数据

use TEST
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

查看数据

select * from TEST

4) 备份现有的数据库
--------做一次完整数据库备份

backup database TEST to disk =N’f:\db-recovery\TEST.bak’

5) 再次向表TEMP_01 中插入50条数据

use TEST
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

查看数据

select * from TEMP_01

) 记录下当前正确数据的时间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 管理工具

备份尾日志

backup log TEST to disk=N’f:\db-recovery\aaaa.bak’ with no_truncate

解释一下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 database test from disk=’f:\db-recovery\TEST.bak’ with norecovery

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文件实现日志回滚将数据恢复(转)的更多相关文章

  1. 日志回滚:python(日志分割)

    日志回滚:python 什么是日志回滚? 答: 将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能.因此,有必要对日志文件按某种条件进行切分,要切分日 ...

  2. [原创]CentOS下Mysql的日志回滚

    一.    环境: a)        Centos-6.5-x64位操作系统. b)        安装mysql.命令:yum install mysql* 二.    配置 a)        ...

  3. python logging模块日志回滚TimedRotatingFileHandler

    # coding=utf-8 import logging import time import os import logging.handlers import re def logger(app ...

  4. python logging模块日志回滚RotatingFileHandler

    # coding=utf-8 import logging import time import os import logging.handlers def logger(appname,roots ...

  5. python logging 实现的进程安全的文件回滚日志类

    python标准库中的logging模块在记录日志时经常会用到,但在实际使用发现它自带的用于本地日志回滚的类 logging.handlers.RotatingFileHandler 在多进程环境下会 ...

  6. jenkins:一键回滚站点集群

    最近在学习jenkins过程中整理了大量资料,都收录在<jenkins自动化工具使用教程>,但依然缺少一些具体实现细节. 这篇文章,介绍jenkins做集群回滚时的两个设计方案,让一键回滚 ...

  7. DataPipeline的增量数据支持回滚功能

    DataPipeline的增量数据支持回滚功能 第一步:数据任务有增量数据时,回滚按钮激活,允许用户使用该功能进行数据回滚. 第二步:点击回滚按钮,允许用户选择回滚时间或者回滚位置进行数据回滚.选择按 ...

  8. Git 使用revert回滚已提交的commit

    在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...

  9. 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚

    1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...

随机推荐

  1. [MODx] 4. getResources

    1. Create a chunk call 'white_content' for white content: <!-- Highlights --> <div class=&q ...

  2. 学习笔记之#pragma

    http://baike.baidu.com/link?url=lxA9Wl1KnacWUDZYz5U06iKMkUAeI6dr0x1wQ4i-rqf6Dpk6hEeOOaj2XhvGx9VLVm2z ...

  3. JAVA_JDBC

    测试类: 1 import java.util.ArrayList; import java.util.List; /** * 创建数据库: * 1.加载驱动 * Class.forName(&quo ...

  4. CI框架中自定义view文件夹位置

    要想自定义view文件夹的位置,首先要了解CI框架时如何加载view文件夹的. CI中默认调用view的方法是: $this->load->view(); //这一行代码的原理是什么呢?请 ...

  5. MySQL提供的错误日志中的错误级别一共有3个分别为:

    ERROR_LEVEL-->错误级别 WARNING_LEVEL-->警告级别 INFORMATION_LEVEL-->信息级别

  6. 初识 Lucene

    Lucene是一个信息检索工具库,而不是一个完整的搜索程序 搜索程序 Lucene索引核心类 Lucene索引核心类: Document: 文档对象代表一些域(field)的集合 Field: 每个文 ...

  7. MATLAB-ginput函数问题

    functions:Graphical input from mouse or cursor ginput提供了一个十字光标使我们能更精确的选择我们所需要的位置,并返回坐标值.函数调用形式为: [x, ...

  8. 最小生成树------Prim算法

    定义:设G=(V,E)是一个无向连通图.如果G的生成子图T=(V,E’)是一棵树,则称T是G的一棵生成树(Spanning Tree). 应用生成树可以得到关于一个电网的一组独立的回路方程.第一步是要 ...

  9. php实现比较两个字符串日期大小的方法

    <?php function dateBDate($date1, $date2) { // 日期1是否大于日期2  $month1 = date("m", strtotime ...

  10. ckeditor

    去掉编辑器的下边栏 在config.js中加入: config.removePlugins = 'elementspath'; config.resize_enabled = false; 就ok了 ...