社区
应用实例
帖子详情
数据库中的数据误删,又没有进行备份,怎样恢复数据,急!
陈保现
2005-02-23 10:29:11
在线等,
...全文
314
5
打赏
收藏
数据库中的数据误删,又没有进行备份,怎样恢复数据,急!
在线等,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
631799
2005-02-23
打赏
举报
回复
原贴地址:http://expert.csdn.net/Expert/topic/2931/2931668.xml
因论坛不允许恢复超过30个帖,故新开此贴
首先答谢lynx1111、leeboyan(宝宝) 、realgz(realgz) 的热心帮助,同时也感谢islandnet(e兔子)、zhijiao(指教)、kkkksunday(我是猪小弟)、shuichangliu(生活一定会越来越好!)、ghostzxp(幽灵)、terencegan(新北京新奥运)、progress99(如履薄冰) 、outwindows(窗外)、Benimarunikado(彭建军) ……等人的热心关注,目前因错误操作覆盖的数据库已经基本完全恢复。恢复后网站重新运行,欢迎各位能来做客[地址http://www.gbq.cn]
现我将恢复数据库的过程以及遇到的若干问题在此向各位汇报,希望能给遇到同样问题的朋友起点帮助:
[故障起因:]
在使用数据导入导工具将本地表往服务器传输时,忘记点掉“选择全部对象”,因此将远程的140张表超过1000万条数据全部覆盖(操作员当时点完提交就去吃饭,因此中途没有取消),数据库没有备份。
[恢复过程:]
使用工具是LogExplore,(下载地址:http://five.ttdown.com/L/Log%20Explorer%20for%20SQL%20Serverv%20v3.21.KG.exe)
安装后打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录,
点击“View DDL Commands”里面就有很多drop table 命令
点击下面的“undo”按钮是生成表结构的语句(create table ....)
点击下面的“Salvage”按钮是生成插入语句的(insert into ...values....)
(以上lynx1111提供)
我是按照上述方法的“Salvage”来生成被删除表的Insert语句,实际上用这个方法生成的SQL脚本已经包含了CreateTable。该过程速度大概用了8个小时,当时觉得慢,后来相比恢复过程,这个速度简直快的不行。最大的表脚本生成后超过1G。
生成所有的SQL脚本后,防止万一,我将数据库停下,并把Date文件夹的Log和.MDF文件拷出来(怕破坏LOG文件,没有使用数据库的备份方式备份),文件大小总共为5.7G
此后开始进行正式的恢复工作。新建一个数据库,先试着用SQL查询分析器运行了一个小表的脚本,完全没有问题。但后来发现导入比较大的SQL脚本文件,查询分析器就报错了。请教了realgz得知logExplorer本身对大脚本有良好支持,因此改用LogExplorer--》Run SQL Script 功能来运行脚本。果然大文件也可以恢复了。
但开始运行后发现包含有ntext字段的表恢复起来异常缓慢,打开一个包含nText字段的表的恢复脚本发现里面使用writeText来写入数据。恢复一个30万数据的表居然用了将近12小时的时间,而数据库中又有大量这样的表,为了加快数据,我又在几个机器上装了LogExplorer加入恢复过程,终于经过3天的时间,全部的表都搞的差不多了,不过恢复过程有少量的错误。
接下来我将几个机器的表导到同一个数据库中,不过此时恢复的表是没有包含索引、标识等扩展属性的,因此需要重新建立索引、标识、默认值以及触发器。在建立主键的时候发现居然有数据重复。。。没办法只好删除重复数据。
使用 select distinct * into t_New from t_Old 可以删除重复数据,但遇到有ntext字段的表是不能用这个方法的,最后只好用 Delete From t_Table Where ID IN (Select ID From t_Table a where (Select Count(*) From t_Table a where a.ID = ID ) > 1 )直接删除了有重复数据的记录
经过72小时的努力,99.9%的数据恢复。并于4月8日晚上恢复运行网站。
这时候部分用户反映无法登陆,一查发现是有小部分数据丢失,也就是LogExplorer里报错误的那些数据……没办法,我重新用UEdit打开SQL脚本,查找这些数据,发现还在,仔细一看发现,这些数据里都有部分内容里使用大量的回车,LogExplorer无法识别,因此才出的错误。
呵呵,顾客是上帝,没办法,只好将用户表重新在本地恢复一次,遇到错误就记录下ID,然后再考出SQL脚本到查询分析器运行(查询分析器可以运行)
现在建立了维护计划,每个星期做一次完整备份。另外操作数据库的流程也变的规范,防止此类事故出现
[一些收获:]
1、慎重使用Text/nText字段
2、LogExplorer的脚本执行工具对付大文件很不错,但执行过程会对多个回车产生误判断
3、有问题不要着急,上csdn找高手帮忙,他们会很热心帮助你
LoveSQL
2005-02-23
打赏
举报
回复
用工具log explorer试试看
陈保现
2005-02-23
打赏
举报
回复
老大,具体怎样操作,拜托
jinjazz
2005-02-23
打赏
举报
回复
没有备份就不好办了
Softlee81307
2005-02-23
打赏
举报
回复
對log 進行 恢復
SqlServer无
备份
下
误删
数据
恢复
工具
SqlServer无
备份
下
误删
数据
恢复
SqlServer
数据
恢复
数据
恢复
工具 SqlServer2012之前版本
Mysql
数据
库
误删
恢复
方法.docx
Mysql
数据
库
忘记
备份
数据
库
,通过.frm和.ibd文件
恢复
数据
的方法,最后只能通过
恢复
工具找到
数据
库
的.frm和.ibd文件, 整个
恢复
过程其实可以总结为下面几步: (1):
恢复
mas2020
数据
库
文件 (2):
恢复
表结构 ...
空间
数据
库
备份
恢复
arcgisdb
空间
数据
库
备份
恢复
arcgis,model,gis,db
MySQL执行delete
误删
除
数据
恢复
将
备份
文件还原到一个临时
数据
库
中
,然后从临时
数据
库
中
将
误删
的
数据
导出,并导入到原
数据
库
中
。 使用事务日志:MySQL 的二进制日志(binlog)记录了
数据
库
的所有变更操作,包括删除操作。你可以通过分析这些日志,...
SQL Server 2008
数据
库
误删
数据
如何
进行
数据
恢复
有个朋友很着
急
地打电话给我,他用delete语句
误删
除了SQL Server 2008
数据
库
中
两个表
中
的所有记录,而这个
数据
库
之前
没有
任何
备份
。让我帮他解决一下,不然他要赔偿客户很多钱。 SQL Server
中
误删
除
数据
的
恢复
本来...
应用实例
27,579
社区成员
68,558
社区内容
发帖
与我相关
我的任务
应用实例
MS-SQL Server 应用实例
复制链接
扫一扫
分享
社区描述
MS-SQL Server 应用实例
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章