[分享]系统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即可

[分享]系统crash后SQL Server 在recovery时的rollback机制_第1张图片

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

[分享]系统crash后SQL Server 在recovery时的rollback机制_第2张图片

REDO script:

[分享]系统crash后SQL Server 在recovery时的rollback机制_第3张图片


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

你可能感兴趣的:([分享]系统crash后SQL Server 在recovery时的rollback机制)