SCPPO:SQL误操作如何恢复?

【前言】

今天研究项目中自己有疑惑的一块儿内容应该是这个系统的核心—数据从上传的Access中解析出来(ETL的贡献)经过一系列的存储过程将数据放到数据库表中(每天凌晨都会定时的执行这一系列操作)这只是今天的引子,不具体深入的讲解下去,小编会在接下来的博文中更加深入的为大家分享;

在分析这块儿的时候无意在服务器上发现一款软件—ApexSQL Log;之前没接触过出于好奇就去网上查了一下它是干嘛用的,这一查不要紧,又燃起了自己新的兴趣,仿佛一切的一切上天冥冥之中自有安排!为何这么说?小编下面为大家娓娓道来。

【探索之旅】

相信有点开发经验的朋友都知道SQL语句的威力,一句SQL可以改变整个世界哈!至今犹记之前世超和浩哥都为自己讲述过一句SQL的误操作造成效果(比如:Delete、Update时忘带where条件等等),往往很多时候发生在正式库上,执行完后:妈呀!想重新投胎的心都有!相信有的读者就经历过,明白其中的威力所以小编在直接操作sql的时候都加倍小心,检查再三再执行,即使这样有时候也难逃手欠的魔爪!

一直在苦苦寻觅一款神奇能想喝后悔药一样,弥补损失;今天果然让我给撞到了!

应用场景:sql误操作!

情景再现:

·在本地数据库中创建一个表,并写入些数据以做测试用(在此以test为数据库,以testsql为表)。

·模拟误操作(在此以delete删除整个表为例)

    使用流程:

·安装:下载安装包进行安装(下载地址:http://pan.baidu.com/s/1qYoygMS),安装过程和普通软件一模一样在此不再赘述。

·利用该软件(在此以2013的破解版本为例)进行数据恢复:

1.填写连接数据库的相关信息:

2.选择评估版本

3.ApexSQL会创建日志库:

4.根据情况选择恢复时间:

5.打开日志操作表:

6.查看数据库的操作日志:

7.进行恢复操作(以恢复删除的第一条数据为例,如果想恢复整个删除十一条数据只需重复该步骤即可):

8.查看恢复的脚本:

9.在SQLServer中执行恢复脚本:

·恢复后进行验证:

温馨提示:

     
官网上(http://www.apexsql.com/sql_tools_log.aspx)已经出到2016的版本,在使用2016版本过程中未找到破解版,导致恢复操作受限,还是拿上面的例子来说,在进行查看恢复日志时会出现如下情况(建议大家使用2013的破解版本功能完整):
 

【总结】

1.郑重声明:通过系统录入数据,严格有流程会从根本上避免这种情况的出现;但是实际情况是很多开发都不是严格按照规范,这样的情况是经常发生(你我都懂的)!

2.对新的东西要保持一颗好奇的心;多去学习自己没接触过的东西!

3.大家在操作数据库时(尤其是线上数据库)还是要倍加小心,这只是补救措施,切不可因有它而对数据库妄作非为不然~~~

时间: 2024-08-04 10:11:21

SCPPO:SQL误操作如何恢复?的相关文章

rm-rf 误操作的恢复过程

很多DBA一定对rm -rf深恶痛绝吧,没准哪天自己一个犯迷糊就把数据库给消灭了,然后,就没有然后了--那万一--真的发生了这样的不幸,是否真的就无药可救了吗?未必,还是有解决方法的,也许某天当你不幸遇到,就可以用来救自己了.这里做恢复操作的前提是没有可用的rman备份,或者数据库冷备份等,也就是说,没有任何备份. 一.登陆SQLPLUS,并启动数据库 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0

mysql权限的误操作的恢复

mysql权限的误操作的恢复 原因:由于误操作,我把repl用户授予了所有权限,但删除了数据库中的其他用户及权限,因此repl用户虽然具有操作所有数据库的权限,但没有grant权限,所以若想授予其他用户权限,来管理数据库,出现这种状况就酷毙了,没有授予权限怎麽办? 误操作过程: mysql >grant all on *.* to 'repl'@'192.168.1.%' identified by '123456'; mysql> flush privileges; 授予完以后,我把其他的所

SQL 误操作恢复实验

直接通过SQL语句恢复有两个必需的条件: 一.数据库在创建之后做过一次完整的备份: 二.数据库的恢复模式(Recovery mode)是"完整(Full)". 恢复步骤: 1.BACKUP LOG [DataBase] TO disk= N'D:\testlog' WITH NORECOVERY 备份当前日志,在出现误操作时一定要先备份当前日志 2.RESTORE DATABASE  [DataBase] FROM DISK = 'd:\test' WITH NORECOVERY, 

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这种情况,一般都是没有做备份,不然也不会来发问了.首先要冷静,否则会有更大的灾难.直到你放弃. 解决方法: 对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了.但是唯一遗憾的是,不支持2008及更高版本,这

【转】SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

4号,公司的生产数据表被全部删除,目前没有找到原因,由于刚接触SQL不久,所以短时间内不会还原,也不敢动被原服务器,于是就将原服务器停掉,拷贝出里面的PPD数据库文件,留作备份:近几天在自己的电脑上尝试修复,一直没有成功,细读了一下<SQL2005技术内幕——存储引擎>了解到删除列.删除表这些操作不会直接对每一行数据进行操作,而是直接改变他们的物理指向地址的ID,专业术语我也不是很清楚,我的理解是这样的,有时间再弄清楚,不过这足以让我明白被删除的表还是存在mdf文件中,其改变的便宜地址记录在日

logminer挖掘归档日志,针对DDL误操作的恢复

日志挖掘,未开启补充日志功能,利用归档对DDL操作进行恢复:        Oracle   的日志文件中,对于表等用户对象(Object),并不是保存名字,而是保存一个ID号.建立字典文件的目的就是使logminer在分析时可以将Object   ID翻译成我们所熟悉的对象名.       建立字典文件之前,先要确保数据库的初始化参数   UTL_FILE_DIR   已经正确地设置.通过命令可以查看是否有字典文件:show parameters utl_file_dir; [email pr

SQL误操作使用log Explorer撤销

1,下载安装log Explorer 2.打开log explorer file=>attach log file->选择服务器和登陆方式->connect->选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行T-sql代码就可以... 例如 如果log是delete table

git操作——git pull 撤销误操作,恢复本地代码

需求 开发的代码还未commit到git本地仓库,就从git远程仓库上pull了代码,导致开发的代码直接被冲掉,需要退回到上一个版本代码. 操作 进入到项目git本地仓库文件夹下 打开cmd窗口,执行命令:git reflog 找到需要回退的版本,执行命令:git reset --hard [email protected]{n} 如执行:git reset --hard 61a942c 原文地址:https://www.cnblogs.com/zuiyue_jing/p/11123654.ht

binlog-rollback.pl 在线恢复update 和delete不加条件误操作sql

一.binlog-rollback.pl工具介绍 是perl开发的脚本工具,此工具主要是生成反向的DML sql语句: #基于row模式的binlog,生成DML(insert/update/delete)的rollback语句 #通过mysqlbinlog -v 解析binlog生成可读的sql文件 #提取需要处理的有效sql #"### "开头的行.如果输入的start-position位于某个event group中间,则会导致"无法识别event"错误 #将