日期:2014-05-17 浏览次数:20614 次
3楼的方法,不是我要的,我要的是只恢复误删的数据,或是错误更新的数据,一般是执行了一条不带where语句的命令。
如果你有完全备份,另外也有日志,可以考虑:
把数据库还原成另一个数据库,比如你原来的数据库是xxx,那么用完全备份先还原成数据库yyy,注意,必须要修改文件的路径,然后用事务日志,恢复到错误操作之前的一个时间点,然后再把数据导出来,再导入到当前数据库中,这样就可以恢复被删除的数据了。
假如是我,我也想到的是这个方法,呵呵
真正的敢去恢复整个生产库的,没经历过,也没见过,
我这里oracle的又一次也是采用这种方式恢复了
一个同事误删了一张表,DBA把备份文件在备份服务器上恢复了,然后拿出来这张表的数据导出来还原的
毕竟,不能说为了某个人的一张表,要停掉整个数据库。
另外,微软自己都没有公布根据日志生成基于脚本的还原技术,第三方的工具可靠吗?
我一直没有接触过这种第三方的工具,难不成是从微软离职sqlserver工程师的人写的,呵呵。
begin tran
delete from a
rollback;
谢谢yupeigu 阳泉酒家小当家
要用备份和还原的方法我也知道,问题是数据库没有备份的情况下,或是日志不全(中间被truncate)
,就只能使用日志恢复工具了。现在网上没有类似log explorer(最高支持2008),能支持2012的第三方工具吗?
3楼的方法,不是我要的,我要的是只恢复误删的数据,或是错误更新的数据,一般是执行了一条不带where语句的命令。
如果你有完全备份,另外也有日志,可以考虑:
把数据库还原成另一个数据库,比如你原来的数据库是xxx,那么用完全备份先还原成数据库yyy,注意,必须要修改文件的路径,然后用事务日志,恢复到错误操作之前的一个时间点,然后再把数据导出来,再导入到当前数据库中,这样就可以恢复被删除的数据了。
假如是我,我也想到的是这个方法,呵呵
真正的敢去恢复整个生产库的,没经历过,也没见过,
我这里oracle的又一次也是采用这种方式恢复了
一个同事误删了一张表,DBA把备份文件在备份服务器上恢复了,然后拿出来这张表的数据导出来还原的
毕竟,不能说为了某个人的一张表,要停掉整个数据库。
另外,微软自己都没有公布根据日志生成基于脚本的还原技术,第三方的工具可靠吗?
我一直没有接触过这种第三方的工具,难不成是从微软离职sqlserver工程师的人写的,呵呵。
另外,这个命令很重要,可以研究日志:
dbcc log(数据库名称,1)
我刚才研究了一下,发现当执行:
begin tran
delete from a
rollback;
然后:dbcc log(数据库名称,1)
会有:
LOP_BEGIN_XACT
LOP_DELETE_ROWS
LOP_DELETE_ROWS
LOP_DELETE_ROWS
LOP_SET_FREE_SPACE
LOP_SET_FREE_SPACE
LOP_INSERT_ROWS
LOP_INSERT_ROWS
LOP_INSERT_ROWS
LOP_ABORT_XACT
说明,对于这种回滚的事务,也会有先删除,然后再插入的日志