博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[分享]系统crash后SQL Server 在recovery时的rollback机制

Posted on 2012-02-21 10:16  nzperfect  阅读(564)  评论(1编辑  收藏  举报

 

来自:msdn论坛贴子

创建一个测试表TESTTABLE, 并且插入如下两行数据:

insert into TESTTABLE values (1, 'aaaa')

insert into TESTTABLE values (2, 'bbbb')

然后做如下的操作。

update TESTTABLE set myName = 'cccc' where myID = 2

为了更加直观化,我们可以用一些日志工具如ApexSQL Log (http://www.apexsql.com/ ) 可以下载来观察一下日志的结构。

这时候,我们可以看到,update的语句包含了oldValuenewValue,所以,在做rollback的时候,因为有了oldValue,所以所谓的恢复就是把value改回为oldValue即可

同时,我们也可以看到相应的UNDO Script.

REDO script:




只是记录oldValue和newValue,而不是记录那个值对应的整个oldpage跟newpage。