尝试修改SQL Server的重做日志文件,使其按照修改的结果执行重做,结果失败

今天上午有时间完成自己一直未实施的一个想法,即修改SQL Server的重做日志,看是否能让SQL Server按照自己的修改执行重做操作,结果让人失望,大致原因应该是重做日志文件日志记录会有校验和之类的机制,修改后,SQL Server不认了。不过也算了却一桩心事。

大致过程如下:

执行数据库全库备份。
执行事务日志备份。
update表t中的一个列值,如把b=‘aaaa’,改为'bbbb'。
查看上述update产生的重做记录,记下其LSN号码。
根据LSN号码,计算其在日志文件中的位置,使用WinHex在重做日志文件中查找对应的日志记录,并把其中的bbbb对应的十六进制数据62626262改为65656565,即eeee。
执行事务日志尾部备份,从而备份上述修改过的日志内容。
执行全库恢复。
由第一次日志备份执行恢复。
由第二次日志日志备份执行恢复,结果报错如下:

已为数据库 'dbfull',文件 'dbfull' (位于文件 1 上)处理了 0 页。
已为数据库 'dbfull',文件 'dbfull_log' (位于文件 1 上)处理了 3 页。
消息 9004,级别 16,状态 3,服务器 APPLE,第 1 行
处理数据库 'dbfull' 的日志时出错。如果可能,请从备份还原。如果没有可用备份,可能需要重新生成日志。
消息 3013,级别 16,状态 1,服务器 APPLE,第 1 行
RESTORE LOG 正在异常终止。

2010-07-20补充:

只要把数据库设置为无数据页IO校验机制,上述实验即可成功,也就是说:数据库的数据页IO校验机制同时对数据文件和重做日志文件生效

设置数据库无数据页校验机制的命令:

alter database db_name set page_verify none

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-1024115/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/37724/viewspace-1024115/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值