RECOVERY与NORECOVERY是否这样理解?
事务 如:
BEGIN TRAN
UPDATE TBL_HYC SET SCORE=85
WHERE USRNAME= 'HYC ' --假设原来该记录中SCORE=65
COMMIT TRAN
在高速缓存中执行前先预写日志
当在系统发生故障后导致数据库文件损坏的时候,刚处于执行,但未提交更改到磁盘时,它已经被写进了LOG
在利用日志还原的时候
应用NORECOVERY时
上面说到的事务会继续执行提交,恢复后HYC的SCORE=85
而应用RECOVERY时 恢复后HYC的SCORE=65
是不是这样来理解呢?
------解决方案--------------------应该不是这样理解的.
在还原过程中, 最后一个 restore 命令 应该必须带上with recovery
以便让数据库进行前滚和后滚.
你的情况,要看数据库DOWN的时候,有没有执行到COMMIT;
如果没有执行到COMMIT;
数据库在恢复时会后滚.(即对没有做COMMIT的数据进行还原)
即恢复到65
,如果在DOWN的时候,COMMIT已经被执行过了.
那么,数据库会前滚, 这时,HYC的值为85