十万火急!大虾救命:数据库没有备份,请问怎样恢复成前两天的数据?

huangwangman 2005-03-20 05:29:58
各位大虾:
我的数据库一直没有备份,现在出现了误操作,表中的数据混乱了,我想恢复到前两天的状态,请问该怎么办?我已经下载了log Explorer,但是不会用,请大家尽快恢复,在线等候!

谢谢!
...全文
202 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangwangman 2005-03-21
  • 打赏
  • 举报
回复
Thanks a lot!
zjcxc 2005-03-21
  • 打赏
  • 举报
回复
停止sql服务,复制数据文件进行备份(注意不是用数据库备份/恢复.否则就没戏了)

安装log explorer自己尝试修复,具体的已经写过了:

打开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提供)

想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....


使用经验总结帖:
http://community.csdn.net/Expert/topic/2954/2954818.xml?temp=.9148676
huangwangman 2005-03-20
  • 打赏
  • 举报
回复
谢谢邹大侠!
我是在VB中对数据集中的数据做一个循环
循环内部执行update 处理,
执行到中间机器死机,导致部分数据已处理,而一部分数据未处理.
麻烦的是我也不知道哪些记录处理过,又没有使用事务处理,
现在就想将数据库恢复到执行循环处理之前或昨天的状态,
我在大本营里发现大家推荐使用Log Explorer来恢复,
以前从来没有用过这工具,
您能详细跟我讲讲,或者是推荐一个地方看看.
不胜感谢!!!
zjcxc 2005-03-20
  • 打赏
  • 举报
回复
没有用事务处理导致数据混乱?

是指数据库中的数据处理一半,导致的正常混乱,还是数据因为处理死机导致的不正常混乱(丢失数据,数据变得莫名其妙?)

如果是前者,尝试用log explorer,如果是后者,那就试试用log explorer,看你运气怎么样了.
huangwangman 2005-03-20
  • 打赏
  • 举报
回复
我是程序在对一个表里面的字段批量执行update语句(没有用事物处理)时,执行一半的时候机器死机,机器只好重启导致数据混乱,想恢复到执行前 或者 更前的数据,请问 大虾 有什么 高招???
江湖救急!!!!!!!!!!!!!!!!
zjcxc 2005-03-20
  • 打赏
  • 举报
回复

log explorer使用的几个问题

1)对数据库做了完全 差异 和日志备份
备份时选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时
提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才的记录了


如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志

2)修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复

3)然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.

3)
不要用SQL的备份功能备份,搞不好你的日志就破坏了.

正确的备份方法是:
停止SQL服务,复制数据文件及日志文件进行文件备份.

然后启动SQL服务,用log explorer恢复数据

4)
如果你的数据库的日志恢复模型是simple,那就不可能用log explorer恢复

5)
Log explorer必须安装在要恢复数据库的sql server服务器上,或者在sql server服务器上安装服务端,在操作的电脑上安装客户端进行数据恢复
Frewin 2005-03-20
  • 打赏
  • 举报
回复
log explorer
mschen 2005-03-20
  • 打赏
  • 举报
回复
Log Explorer



log explorer的使用方法

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

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....



系统中有一个数据库DB1,系统正在使用的过程中,不小心删除了某表T1的数据
现我可以按照用完整备份文件加日志备份时间点TIME1恢复的方法来恢复该数据库

但问题出在该数据库一直还必须在使用中,所以除了你删除了数据的TA表外,其它的
表的数据你不能只是恢复到错误时间点TIME1处,因为,TIME1以后也有数据变化.也就是
如果你只想恢复其中一个表的数据,而其他表的数据不受影响.你就应该用以下的两种方法.

解决这个问题有两个方法
1:用LOG EXEPLORE 可以轻松搞定

如上所述:

2:先建立一个数据库DB2,将完整备份文件恢复到DB2中,再用DB2中的T1数据来更新
DB1中的T1数据即可.


--查看备份信息
RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'

--还原旧的备份
--首先是完全的数据库备份

RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup' with replace,norecovery,

--注意用replace选项的原因:sql server执行安全检查,如果备份集的数据库的名称和还原的数据库的名称不同,那么就会禁止还原,防止对原先的数据库意外重写.如果指定replace选项,那么就不会执行这样的检查.
move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf'

--还原数据日志到时间点
--还原事务日志的备份,可以还原表上的数据,然后我就可以把表上的数据对db1进行更新了.

restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'
huangwangman 2005-03-20
  • 打赏
  • 举报
回复
等了半天,怎么一个人也不现身啊,
高人都哪去了呢?

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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