前日数据损坏,需要进行恢复,虽然我们有每月的完整备份和每周的差异备份,可对于业务来说还是远远不够的,我们希望能够恢复到出现事故的那一个时间点之前,这就只好求助于事务日志了。可惜的是之前我们并没有做事物日志备份,而且数据库的恢复模式设置成了简单模式,这给恢复工作带来了一点麻烦。
幸好有一个工具叫做Log explorer的可以解析Sql Server的日志,并做重做。按照网上的步骤进行操作,发现它生成的恢复语句似乎有些问题,比如他需要对Update语句修改的数据生成 Delete和Insert语句(即先把错误的数据删除,然后将正确的数据插入),可是如果这个被修改的数据与其它的数据表有约束关系,那么Sql Server会拒绝执行,所以直接按照此方法恢复很是麻烦。经过摸索原来Log Explorer可以将日志导出成Xml格式,导出的数据中详细的记录下了对数据的操作,对于Update而且还包含有修改了哪些字段,以及原始值和被修改后得值。
根据这个xml文件不难自己写一个数据恢复脚本生成工具。咱也整了一个,并不完美看哪位兄弟万一用得到,可以拿来参考吧。/Files/Ankh/SqlLogRecovery.zip