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

来自: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。


作者:nzperfect
出处:http://www.cnblogs.com/nzperfect/
引用或者转载本BLOG的文章请注明原作者和出处,并保留原文章中的版权信息。

原文地址:https://www.cnblogs.com/nzperfect/p/2360887.html