通过sqlserver日志恢复误删除的数据

原文:通过sqlserver日志恢复误删除的数据

如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解。

我遇到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web.config文件里面的数据库连接字符串没有加密,而我的数据库远程连接又没有做IP限制,黑客通过数据库客户端连上我的数据库后,将所有的表都Delete掉了,所以大家一定要有一个好习惯将数据库连接字符串加密或者对远程访问数据库的IP作限制

因被黑客Delete掉所有数据的具体时间点我不清楚,所以我就用了一个工具Log Explorer来查看分析数据库日志,看具体是什么时候被Delete掉的(若你已经知道想要还原的时间点,就不用使用此工具啦),至于Log Explorer如何安装使用的,这里就不赘述了,去百度一搜一大堆,安装的时候Client和Server都选,然后安装中会有一步让你输入数据库的用户名和密码,其他不懂的就疯狂下一步吧。

通过Log Explorer工具我查看到被删除的时间点是:07-10 09:46:29.880,那我一会把数据还原到07-10 09:46:29.879就好咧

下面开始言归正传的进行恢复操作了

1、将数据库日志备份一下,用T-Sql语句

?


1

BACKUP LOG shua TO DISK=‘c:\shua_log.bak‘ WITH FORMAT

2、因我的数据库每天都有自动完整备份,找一个最近时间的完整备份,来还原一下,这里我不往旧库覆盖了,直接还原成一个新的数据库shua2

用SQL Server Management Studio工具进行界面操作吧,写sql语句还原太复杂了,不会啊。

对着数据库->右击->还原数据库,下图是我在[还原数据库]界面->[常规]选项卡页的填写情况

然后点【选项】选项卡页,注意这一步非常重要哦

点击【不对数据库执行任何操作,不回滚来提交的事务】,然后确定。如果数据库比较大,这个还原要等很长时间,出去吸几口新鲜空气吧,大功就要告成了。

3、待数据库还原成功后,是这个状态

显示(正在还原...),对着shua2这个数据库右击->任务->还原->还原事务日志。

如上图所填,先填刚开始备份的日志c:\shua_log.bak,然后勾选[还原],最重要的是选择时间点,可惜这个时间点不能选毫秒,所以我就选了29秒,这个时候会还原29.0秒以前的数据,而我的数据是从29.880秒被删除的,所以选29秒妥妥的;为什么我没有选择28秒呢?因为我的数据库每一秒的改变都很大,所以我尽可能的缩小这个时间范围。

填好后,点【确定】吧,大功告成了。现在数据库已恢复成2014-07-10 09:46:29.0时的状态,自然的我那些表数据都回来了。

ps:

1、若您的数据库从来没有完整备份过,就不能用此办法恢复了;

2、在【完整备份->现在】这个时间段内,你进行过数据库日志的较大程度压缩,还原起来恐怕也困难了。

时间: 2024-08-08 09:38:19

通过sqlserver日志恢复误删除的数据的相关文章

Linux中利用extundelete恢复误删除的数据

利用extundelete工具恢复磁盘误删除的数据 原理: 简单介绍下关于inode的知识.在Linux下可以通过"ls -id"命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入: [[email protected] Server-100 shell]# ls -id / 2 / 在利用extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode一般为2) 来获得当前文件系统下所有文

【多图教程】服务器恢复误删除的数据,netAPP存储误删除数据恢复教程

一.服务器误删除数据恢复案例背景 一客户由于误操作,不小心将服务器内的1个容量为5T的lun和10个容量为1T的lun删除了,客户急需恢复服务器内的数据.用户服务器配置信息如下表: 用户误删除的数据信息如下表:图2: 二.服务器数据备份 在进行服务器数据恢复操作前需要将客户原服务器内的所有数据进行镜像备份操作,然后对备份的数据进行分析与恢复,将原服务器交还用户. 三.服务器数据恢复过程 分析该服务器内的所有硬盘,在盘头位置找到超级块,从超级块中得到磁盘组名字,磁盘组的逻辑起始块号,总块数,磁盘组

利用sqlserver日志恢复数据

如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解. 我遇 到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web.config文件里面的数据库连接字符串没有加密,而我的数据库远程连 接又没有做IP限制,黑客通过数据库客户端连上我的数据库后,将所有的表都Delete掉了,所以大家一定要有一个好习惯将数据库连接字符串加密或者对远程访问数据库的IP作限制. 因被黑客Delete掉所有数据的具体时间点我不清楚,所以我

Linux中用extundelete恢复误删除的数据

extundelete是一个用来恢复ext3.ext4分区的文件的工具.它会利用分区中的日志信息尝试恢复被删除的文件.但是,并非每个被删除的文件都能确保被恢复,所以养成良好的备份习惯是非常重要的.extundelete恢复文件的原理在恢复文件时,extundelete会通过文件系统的inode信息(根目录的inode一般为2)来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inde.然后利用inode信息结合日志去查询该inode所在的block位置,包括直接

利用extundelete恢复误删除的数据

系统rhel 6.4 文件系统格式:ext4 前提:需要恢复的数据没有损坏. 之前不小心删除了重要数据,里面都是图片,整个目录有20G Linux文件恢复(extundelete): //先卸载被误删除文件所在的磁盘(立即),以免被写入其他文件,占用inode,导致无法恢复文件 umount /dev/mapper/vg_data-lv_data   yum -y install e2fsprogs.x86_64 e2fsprogs-devel.x86_64 e2fsprogs-libs.x86

orcle恢复误删除的数据

今天下午在操作数据库时,一时手误,将公司的数据库中的数据删了,急忙找了点恢复数据的方法,其实感觉还是很简单的,具体实现思路如下: (1).通过SQL语句查询在某个时间段.某张表的的数据,select * from TABLENAME as of timestamp to_Date('2015-05-22 15:28:00', 'yyyy-mm-dd hh24:mi:ss') (2)将查询出来的数据导出成CSV文件,然后将CSV文件转换成Excle文件,最后通过plsql的ODBC导入器将数据导入

linux下恢复误删除的数据文件

在linux系统运维中,经常会遇到各种因操作不慎.操作失误等行为导致数据丢失的情况,此时我们可以利用extundelete进行数据的恢复.一. 实验前的准备 新建一个磁盘 在虚拟机设置窗口中,找到"硬盘",点击"添加",在打开的"添加硬件向导"窗口中,选中"硬盘",点击下一步,接下来我们直接默认选择"下一步",直到最后选择"完成",2.重启系统,我们可以用 init 6 这条命令重启系统

恢复SQL Server被误删除的数据(再扩展)

恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复 实验步骤 1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete ( id INT IDENTITY(1, 1) NOT NULL P

【转】SQLServer恢复表级数据

原文地址:http://blog.csdn.net/dba_huangzj/article/details/8309503 最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和工作总结,给出一下几个方法,用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好. 在生产环境或者开发环境,往往都有某些非常重要的表.这些表存放了核心数据.当这些表出现数据损