sql数据删除后恢复
不小心把客户那边的数据库中删了一千多条数据,之前又没有备份,很郁闷,后来在网上找到一工具(Log Explorer),让我躲过一劫。
首先看一下界面:输入服务器地址,用户名及密码后点Connect,进入界面:在这里选择要恢复数据的数据库,选择UseOn-lineLog(假如你又备份文件的话就不需要用这个工具了,直接用SQL搞定了)。
然后点Attach,进入界面:可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出误操作的那些日志记录,点Browse下的ViewLog:
这样我们看到对于这个数据库的所有操作日志,我们可根据日期等条件来过滤出我们需要的:
过滤日志之后,就到导出数据这一步,这个工具提供了两种方式,第一是导出到XML或HTML文件中(对应左边菜单中的ExportToFile),第二是直接在数据库中建新表,然后将数据导入(ExportToSQL)。
我们来看一下导入到SQL的情况,首先点ExportToSQL选项:输入Database及Table的名称,然后Finish。
这样在你数据的数据库中就会看到有这样几个表:TestTable TestTable_dll TestTable_details TestTable_Keys TestTable_Login
其中恢复的数据就在TestTable_details表中,不过数据格式已经变了,你还需要写存储过程或用其它方法把它导入到原来的表中。
由于大小已超过限制,没有将工具传上来,不过网上有很多地方提供下载,假如你需要,请留下Email。(网络人 asp教程网)
参考资料:http://www.knowsky.com/341437.html
参考二:误删数据情况下数据库的恢复
昨天公司发生一个灾难,日报系统SQLSERVER上的所有数据被一个冒失的家伙全部删除了。询问管理员,竟然从没有做过备份。经过一翻查找,我在网上找到了一个非常有用的工具,可以将数据库的数据恢复到特定的时间点,当然前提条件是数据库文件.MDF与日志文件.LDF完好。该工具是Lumigent公司的 Log Explorer,有SQLSERVER和ORACLE两个版本。 hexin_2000
用狗狗SEARCH,下载,安装使用步骤如下:
1)打开菜单上的 file=>attach log file->输入服务器和登陆方式,点connect。
2)下一步选择要恢复的数据库,这一步有两个选项“Use on-line Log”和”use backup File”。因为公司的数据库从未做过备份,我就只选择了前者,点“attach”
3)在左面的列表中会出现许多新功能
Log Summary:日志摘要。
Load Analysis:日志分析,会提供当前.LDF中用户和TABLE的内容。
Browse->view Log:这个最重要,显示了步骤2)中加载的日志详细信息,如果你的数据被刚刚删除,右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行T-sql代码就可以了。
View DDL Commands:这个可以看到执行过的DDL语句信息。
因为我这里数据库中的数据全没有了,所以我采用的是“Salvage Dropped/Truncated Data”,在“Table”中选择要恢复的表,选择恢复的时间,“Condition”条件选的是“Table was dropped” ;选择保存文件名和路径后点“Create”,就将该时间点该表的数据全部导出了。并且该文件还考虑了表的“自增列”问题。然后打开该文件到查询分析器里执行T-sql代码。
如果表上存在触发器,一定要将触发器先关掉。
该工具对于开发期间由于SQL语句不当误删误修改数据也很适用。
还有一点问题,加载的日志好象只包括了当前的日志,对于已经存档的没有加载。
参考资料:http://blog.tianya.cn/blogger/post_show.asp?BlogID=119560&PostID=1414115
参考三:
按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sqlserver服务(注意不要分离数据库);
3.用原数据库的数据文件覆盖掉这个新建的数据库;
4.再重启sqlserver服务;
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名);
6.完成后一般就可以访问数据库中的数据了。
这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了。
use master
go
sp_configure ‘allow updates’,1 reconfigure with override
go
update sysdatabases set status =32768 where name=’置疑的数据库名’
go
sp_dboption ‘置疑的数据库名’, ’single user’, ‘true’
go
dbcc checkdb(’置疑的数据库名’)
go
update sysdatabases set status =28 where name=’置疑的数据库名’
go
sp_configure ‘allow updates’, 0 reconfigure with override
go
sp_dboption ‘置疑的数据库名’, ’single user’, ‘false’
go
参考资料:http://blog.54master.com/html/54/t-124154.html
参考四:如何恢复PF中被误删除的记录?
日志(Journal)的概念相当于其它关系数据库的日志(LOG),通常如果事务型应用需要提交/回滚(Commit/Roll Back)时,数据库的表是需要日志的。另外,如果表上定义了触发器、参照完整性(Referential Integrity),表也需要日志的。ITS qingzhou
DB2 for iSeries的表是可以有日志的,也可以无日志的。如果你用来创建的是Library而不是SQL的Collection,那么创建于这个Library的表默认是没有日志的。反之,如果你用来创建的是SQL的Collection,那么创建于这个Library的表默认是有日志的;默认的日志是QSQJRN,默认的日志接收器是QSQJRN0001,用户可以更改这些默认属性。
以下就是通过日志来恢复误删除PF记录的一个事例,你可以用Navigator方式进行创建日志,如果习惯用5250仿真绿屏方式,也可以使用CL命令来创建日志,以下是以5250绿屏方式。
1、创建日志接收器
=> CRTJRNRCV JRNRCV(LIU/LIUJRNRCV) TEXT(’Liu’s Journal Receive’)
2、建立日志
=> CRTJRN JRN(LIU/LIUJRN) JRNRCV(LIU/LIUJRNRCV) TEXT(’liu’s Journal’)
3、以LIU/EXECTL这个PF为例,以*BOTH方式启动日志
=> STRJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN) IMAGES(*BOTH)
为了利用JRN进行修改回退,JRN必须启用了参数”Journal p_w_picpaths”的”*BOTH”选项,即除了缺省的”After Images”还要包含”Before Images”.
4、先查询目前记录情况,共75条记录。
=> RUNQRY *N LIU/EXECTL
5、测试:通过STRDFU删除LIU/EXECTL记录5条,然后再次查询情况,仅剩下70条记录。
6、利用RMVJRNCHG命令恢复记录
=> RMVJRNCHG JRN(LIU/LIUJRN) FILE((LIU/EXECTL))
7、系统提示:Remove failed. 5 entries removed from *QDDS object.
8、再次查询LIU/EXECTL情况,发觉被删除的记录已经恢复。
如果想删除日志及日志接收器,需要按照如下步骤实施。
1、先解除日志与PF文件的关联
===> ENDJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN)
2、删除日志
===> DLTJRN JRN(LIU/LIUJRN)
3、删除日志接收器
===> DLTJRNRCV JRNRCV(LIU/LIUJRNRC
参考资料:http://bbs.chinaunix.net/viewthread.php?tid=778391&extra=page%3D1%26amp%3Bfilter%3Ddigest
参考五:数据误删,如何恢复?
数据库中有一表,名为:info。本人用delete info将表中的数据删除了,提前没有备份,请各位大虾帮忙,如何恢复啊?
网友回答:pengdali:log explorer
log explorer 下载地址:http://www.ttdown.com/softdown.asp?id=14562
http://www.yiii.net/app/servlet/net.yiii.club.downloadservlet?information_id=i00023471
解压缩密码:www.heibai.net
http://www.ttdown.com/softview_8647.htm
注册机产生的是注册码,是两个。用解压缩密码解开后,压缩包里也有一个注册机的。
1. 打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
2. 选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了。
3. 想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行 t-sql代码就可以了。(?)
例如:如果log是delete、table、where…的话,生成的文件代码就是insert table ….
参考资料:http://www.hurun-food.com.cn/software/p708/A70887129.shtml
参考六:怎样把误删的表恢复?
使用Log Explorer恢复数据。用日志工具Log Explorer。步骤如下:
1、查看日志
a、打开log explorer,选择菜单File– >attach log file
b、在Log File Selection窗口中,填写连接到要恢复数据的数据库服务器机器名、数据库登录ID及密码,然后点击”Connect”按钮。
c、若连接成功,则窗口左边树将显示命令菜单,这时我们点击Browser下的View Log命令,此时窗口右边则出现该数据库的Log。
2、恢复数据库
这时您只要选择您要恢复对事件点,右键点击选择”undo transation”命令,保存T-SQL代码,然后在查询分析器中执行该T-SQL代码
注:删除后作了数据库备份,备份会截断日志。
参考资料:http://bbs.51cto.com/thread-434144-1-1.html
参考七:没有日志文件也能恢复数据库的两个方法
方法一
1.新建一个同名的数据库
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
具体其它方法参考资料: http://tech.ccidnet.com/art/11217/20070820/1183667_1.html