【【【紧急求助!SQL数据库恢复!会SQL的都来看看 谢谢!急!!】】】

噯卟釋手 2004-12-17 05:03:24
话说今天下午3点30分 鄙人正在调试程序 突然发现不能正常登陆 我一楞 怎么回事?待我仔细一一排查 原来是公司另一位同仁连上我的数据库 将我数据库部分视图、表 删除了 !!!!!!还修改了部分表的结构!!!!还把每个表的记录都复制了一遍!!!!我晕!!!不幸中的万幸是 所有存储过程还在 请问各位 有方法恢复他删除的那些视图、表吗?他修改了哪些表的结构我也不太清楚 能恢复过来吗? 请给出详细的方法 不胜感激 谢谢~~~~


谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~ 谢谢~~~~
...全文
142 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2004-12-17
  • 打赏
  • 举报
回复
按楼上 vinsonshen(猪骨褒咸鱼->味道没得顶) 的办法,下载一个 LogExplore 工具回来根据日志恢复数据。
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢邹老大呢 小二哥呢
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
libin_ftsafe(子陌红尘) 帮我想想办法
vinsonshen 2004-12-17
  • 打赏
  • 举报
回复
[故障起因:]
在使用数据导入导工具将本地表往服务器传输时,忘记点掉“选择全部对象”,因此将远程的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脚本到查询分析器运行(查询分析器可以运行)

现在建立了维护计划,每个星期做一次完整备份。另外操作数据库的流程也变的规范,防止此类事故出现
---------------------------
打开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提供)
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
我有毛的备份啊 好象是3个月前才备份了一次 不可能让我恢复到那个时候的撒 那我这几个月的工作不是白干了啊 几十个存储过程 新加的表 新写的视图 不是全都得重写啊 要不得哈
还是看能不能恢复到我今天下午3点30分那个时候的数据库撒 谢谢 谢谢
子陌红尘 2004-12-17
  • 打赏
  • 举报
回复
之前有没有做过数据备份?
lh1979 2004-12-17
  • 打赏
  • 举报
回复
如果日志文件没有删的话,可以用log explore 来恢复
lh1979 2004-12-17
  • 打赏
  • 举报
回复
你还有备份阿,如果没有备份的话,那不大好办
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
他是在他的机器上删除我机器上的东西的 用的是sa用户
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
日志文件 什么东东啊 那是何物?
ljial 2004-12-17
  • 打赏
  • 举报
回复
日志文件还在的话
使用该工具log explorer for sql server
在恢复之前,千万不要截断日志



噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
晕 下班了没人是吧
噯卟釋手 2004-12-17
  • 打赏
  • 举报
回复
神啊 救救我8~~~~

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧