SQL Server 2014 数据库误删数据的恢复处理

news2024/9/20 15:24:59

一、序言

作为程序开发人员或 DBA,经常会接触到数据库(以 SQL Server 2014 数据库为例)的增、删、改查操作。执行 delete 语句时不小心误删数据表的记录情况,而数据库之前又没有任何备份

SQL Server 数据库自身的数据库还原数据处理,找回数据不是一件难事,但还原数据有两个前提条件:

  • 在删除数据操作之前有做数据库的“完整”备份处理。
  • 数据库恢复模式(Recovery Mode)是“完整”模式。

显然目前情况不满足以上条件,不能使用数据库还原来恢复数据。需要借助第三方工具来找回数据。以下介绍如何使用 ApexSQL Log 工具来恢复数据。

以下使用 ApexSQL Log 2016 版本进行说明。

二、ApexSQL Log介绍

ApexSQL Log 是一款优秀的数据库恢复软件,基本支覆盖 SQL Server 主流版本(最新发布说明点击查看,根据当前安装的SQL Server版本来选择对应支持的 ApexSQL Log 版本),能恢复 Delete/Update 等误操作的数据并生成相应的脚本。

官网:

SQL transaction log reader | ApexSQL

下载地址:

https://www.apexsql.com/zips/ApexSQLLog.exe 

三、安装工具

下载好文件后,接下来准备安装工具。

双击 ApexSQLLog.exe 文件,打开Setup窗口,只是进行数据恢复的话,选中 “Install ApexSQL Log” 选项,如下图:

 点击 “Next”,进入安装处理状态,Setup 窗口显示 “ApexSQL Log 2016 was successfully installed” 的提示表示已成功完成安装,如下:

点击 “Close” 按钮,直接关闭窗口打开ApexSQL Log 工具。

四、准备数据

为了更好实现数据恢复流程,创建一个新数据库(LocalTest)用于进行测试处理。

1. 在 SQL Server 中创建 LocalTest 数据库。

2. 在 LocalTest 数据库里创建一个 Users 表并初始 12 条记录。

注:初始数据自行准备。

3. 模拟误删除数据,执行 delete 语句。

接下来通过 ApexSQL Log 2016 工具对误删除的 12 条数据进行恢复处理。

五、数据恢复

安装好工具,接下来进行数据的恢复处理。

1. 工具恢复数据有个前提条件:数据库的恢复模式(Recovery Mode)必须是“完整”模式,其他模式下很可能是无法恢复。

2. 双击打开 “ApexSQL Log” 工具,提示要设置连接到那个数据库(与连接 SQL Server 的设置是类似),如下图:

 Authentication: 有 “Windows authentication” 和 “SQL Server Authentication” 两种认证方式,与 SQL Server 登录认证方式是一样,根据实际情况来选择不同方式。

3. 点击 “Next” 按钮,Windows 会提示用户要对其进行授权控制的处理,授权完成后,会再次进入 ”Database connection“ 窗口,这次点击 “Next“ 可以正常进入。(不知是 Windows 10 系统安全验证问题还是软件自身为了考虑到数据安全问题才需要授权二次进入,具体原因 百度或Google 一下,这里就不深入研究)。

 4. ApexSQL Log 是一款商业软件,提供评估版本功能无限制 14天 免费试用。”Next“ 进入软件功能主体时,会提供三个选项(Evaluate、Activate、Purchase),如条件允许的话,可以直接购买软件(正式版本不再显示该窗口)。选择 ”Evaluate“ 进入评估版本。

5. 点击 “Evalute” 进入 “Data Sources” 窗口,自动加载出当前连接数据库(连接时选择的数据库LocalTest)的事务日志文件,也可以点击 “Add file” 按钮手动添加日志文件(*.ldf),如下图:

6. 下一步,提供结果输出方式的选择,如下图:

 “Open results in grid”:以表格的形式显示日志文件内满足指定条件的操作日志记录,可以对日志记录进行 “Undo/Redo”、“Create Before-After report” 和 “Export results” 的操作。

Undo/Redo”:对日志操作进行回滚或者重复处理。

"Create Before-After report":创建前-后操作记录报表,以 SQL、SQL Bulk、XML、HTML 的方式保存或者直接保存到数据库中。

Export results”:将日志数据导出到 SQL、SQL Bulk、XML、HTML、CSV 或者直接到数据库中。

7. 为了详细查看日志的内容,点击 “Open results in grid”,进入 “Filter setup”,设置加载数据的过滤条件,如下:

Time range:设置过滤日志操作记录的时间范围。

Operations:设置过滤要显示那种操作类型(DML和DDL)的日志。

Tables:选择要输出日志内容的数据表。

8. 设置好日志记录过滤条件后,点击 “Finish” 按钮后,自动读取日志资源,如下图:

注:在表格头上面会注意有一句警告提示语句:“Trial Version: Only details of every 10th row will be available”。当前版本是评估试用版,限制每第10行的记录才显示详细内容以及部分功能的使用。如想查看每行记录的详细和使用完整功能,建议购买正式版本。

9. 读取完日志文件资源后,在表格中可以看到之前执行初始数据(insert)和删除数据(delete)操作的日志记录,如下:

在表格左边可以根据实际情况选择条件(Time、DML、Users和Other)来过滤日志记录,如下:

10. 使用 delete 语句误删了数据,想恢复数据就可以 “Undo delete" 操作,那数据就找回来了。按这思路,找出所有 “delete” 操作的日志记录(通过左边 Grid filter 设置 DML 条件为 delete 筛选出删除操作的日志记录)。全选所有记录,点击 “Undo” 按钮创建回滚处理脚本,如下:

 11. 完成处理后,自动打开 “Undo script” 窗口显示回滚处理的SQL脚本

可以直接点击 “Excute” 按钮来执行脚本或者 “Save” 到本地事后执行。

执行完脚本

 查询Users数据表,可以看到那 12 条数据已恢复。

数据恢复处理已大功告成!!!!

注:执行 "Truncate Table" 语句清除数据,是没办法做回滚操作。只能通过重做(Redo)删除之前的操作来恢复数据。

六、总结

使用ApexSQL Log工具只作为挽救数据的最后一步,针对误删量级(百万级以上)以上的数据使用工具恢复也是不好处理。平时还是要做好日常的数据库备份,条件允许的话可以做DB镜像或AlwaysOn集群,就免去了误删数据后恢复数据的烦恼。

注意以下几点:

  • 要恢复的数据不在一个量级以上的。
  • 数据库的恢复模式(Recovery Mode)必须是“完整”模式。
  • 工具试用版本部分功能有限制,如需进行完整数据恢复处理使用正式版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用蚁群优化 (ACO) 解决背包问题(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 背包问题(Knapsack problem)是一种组合优化的NP完全(NP-Complete,NPC&#xff0…

【My Electronic Notes系列——组合逻辑电路】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

【页面设计】03.JavaScript

一、什么是JavaScript? 一种编程语言,可以在网页上实现复杂的功能、交互等。是一种解释型语言,也是一种面向对象的语言。 ps:解释型语言,是在运行的时候将程序翻译成机器语言。解释型语言的程序不需要在运行前编译&a…

怎么找回删除的文件?尝试下这些恢复数据的方法

我们使用电脑时,总会产生各种各样的文件数据。这些文件保存在电脑里面,但是有时不免手滑误删重要的文件。这些文件被删除、被清空了,还可以恢复回来吗?怎么找回删除的文件?建议你尝试下这些恢复数据的方法。 一、文件恢…

一篇了解Eureka

文章目录一.Eureka注册中心1.1.Eureka简介1.2.Eureka基本架构1.2.1 EurekaServer(注册中心)1.2.2 EurekaClient(客户端)二.Eureka项目的构建2.1 新建一个工程EurekaServer-70012.2.将user-service注册到Eureka2.3 消费者从Eureka获取服务2.4.注册微服务信息完善三、CAP理论3.1.…

ITK多线程加速filter

文章目录1. ITK多线程简介1.1 平台多线程1.1.1 基本内容1.1.2 Intel的TBB1.2 典型例子(执行原理)1.3 5.X版本之后的变动1.4 ITK多线程整体认识1.4.1 基本内容1.4.2 过滤器级别的多线程(Filter Level Multithreading)1.4.3 内存管理…

Shader绘制2D圆-学习Cherno教程笔记-(OpenGL/Vulkan/DirectX/Metal)-新手向

文章目录相关网址前言基本实现画一个圆步骤1.初步-根据长度绘画圆2.初步-根据1-length(uv)绘画圆3.正式-绘画白色形状的圆(1)if逻辑代码实现(2)用shader的step函数完善圆-实现绘画手环圆1.if逻辑代码实现2.用step函数代替if用smoothstep代替step函数1.smoothstep函数2.使用smoo…

ESP-IDF:使用STL stack栈做检查括号是否匹配测试

ESP-IDF:使用STL stack栈做检查括号是否匹配测试 /使用栈检查括号是否匹配测试/ #include typedef struct LINKNODE20 { struct LINKNODE20 * next; }linknode20; typedef struct MYCHAR20 { linknode20 node; char * address; int index; }MyChar20; MyChar20 * createMyC…

【MFC】文档操作——范例(12)

使用MFC框架文档操作范例: 创建工程 创建工程,其中: 1、MFC单文档 2、自定义改应用程序数据文件扩展名: 3、 最后一步选择CListView(用报表显示数据) 重点问题:数据文件的读写功能 添加数据类…

电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法

本文介绍在使用不同尺寸、不同分辨率的两个或多个电脑屏幕时,鼠标在不同屏幕之间切换时,出现偏移、飘动、不规则运动等情况的解决方法。 对于使用两个或多个电脑屏幕的用户而言,鼠标在不同屏幕之间的切换有时候会出现偏移的问题。在同时使用多…

【My Electronic Notes系列——逻辑函数的化简】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

MySQL入门篇-MySQL字符集小结

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL的字符集 前言: 字符集和排序规则 说实话我对这两个概念比较模糊,其实可以简单的理解: 字符集(character set):定义了字符以及字符的编码。 排序规则(collation):定义了字符的比…

【Django】ORM增删改查、F对象和Q对象、聚合操作和原生数据库操作

1、ORM的增删改查均需要通过管理器对象进行。 2、可使用python3 manage.py shell 进入脚本页方便操作。 3、可修改输出格式 一、ORM查询操作 1、查询方法 (1)all()方法 用法:MyModel.objects.all()作用:查询所有数据&#xff0c…

微信小程序——自定义组件(纯数据字段),组件的生命周期,组件所在页面的生命周期,插槽,父子组件之间的通信,事件绑定,属性绑定,behavior

一.纯数据字段1.什么是纯数据字段概念:纯数据字段指的是那些不用于界面渲染的data字段。应用场景:例如有些情况下,某些 data 中的字段既不会展示在界面上,也不会传递给其他组件,仅仅在当前组件内部使用。带有这种特性的…

《Keras深度学习:入门、实战与进阶》之回归问题实例:波士顿房价预测

本文摘自《Keras深度学习:入门、实战与进阶》。 本节将要预测20世纪70年代中期波士顿郊区房屋价格的中位数。这个数据是1978年统计收集的,数据集中的每一行数据都是对波士顿周边或城镇房价的描述,包含以下14个特征和506条数据。  CRIM&am…

verilog图像算法实现和仿真(代码与实践)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 这里的代码指的是verilog代码,而不是之前的python代码。因为verilog处理的是数据,所以之前我们也谈到过,如果需要用verilog处理图像数据,需要先用python把图像变成文本文件,等到…

菜鸟的进阶--手写一个微型Spring

前言想干嘛深入了解spring原理,特别是IOC容器是如何实现的?AOP是如何实现的?手写一个spring迷你版框架,实现容器和AOP机制。我为什么想这么做spring是整个java体系中最重要的框架,它整合第三方技术,将所有的…

交联剂134272-64-3,Maleimide-NH2 HCl,2-马来酰亚胺乙胺盐酸盐

【中文名称】N-(2-氨乙基)马来酰亚胺盐酸盐,2-马来酰亚胺乙胺盐酸盐【英文名称】 MAL-NH2 HCl,Maleimide-NH2 HCl,MAL NH2 HCl,Maleimide-amine HCl,MAL-amine HCl,N-(2-AMinoethyl)MaleiMide Hydrochlorid…

5年老测试员,面试被刷,别人说他不懂自动化测试.....

圈内认识的朋友最近跳槽了,之前在一家小公司干了5年测试,本来以为很容易跳一个高待遇的工作,结果却比想象的难,因为他不会自动化测试… 最近也看了很多人的简历,写的都是3年工作经验,但面试中&#xff0c…

对数据库几个范式的理解

数据库关系理论 这部分主要是几个概念很抽象,大家开始学可能学不明白。最近在准备复试,复习了一下相关的内容,顺便做一下总结。 先说几个名词: 候选码:能够唯一确定一个元组的属性集合称为候选码。注意是集合&#…