日期:2014-05-18  浏览次数:20789 次

RollBack语句引起的数据丢失如何恢复
我的VC应用程序多线程共用一个ADO连接访问sql2000数据库,数据库有一存储过程有begin tran和rollback语句。做过这样的测试,当一个线程触发rollback语句执行时,期间其它线程的数据操作是不会被取消。但可怕的事情还是发生了,服务器访问不了持续一个半小时,重启数据库后发现丢失了重启前一个半小时的数据。但存储过程没用到的表里面,在那一个半小时内还是有数据的。

有人碰到类似的问题吗?丢失数据是rollback使用不当还是数据库重启造成?数据库的故障还原模型是“大容量日志记录的”,能从事务log文件里恢复数据吗?

------解决方案--------------------
rollback返回到你的操作,不对数据起更新修改.

你所说的情况,我还是第一次听说.

如果确实丢失了,可用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代码