4号,公司的生产数据表被全部删除,目前没有找到原因,由于刚接触SQL不久,所以短时间内不会还原,也不敢动被原服务器,于是就将原服务器停掉,拷贝出里面的PPD数据库文件,留作备份;近几天在自己的电脑上尝试修复,一直没有成功,细读了一下《SQL2005技术内幕——存储引擎》了解到删除列、删除表这些操作不会直接对每一行数据进行操作,而是直接改变他们的物理指向地址的ID,专业术语我也不是很清楚,我的理解是这样的,有时间再弄清楚,不过这足以让我明白被删除的表还是存在mdf文件中,其改变的便宜地址记录在日志log文件中。但是试了很多办法也找不回表,曾试过第三方软件比如Log Explorer(很多人说4.2版本可以用在SQL2005上,但是我的没法用于找回删除的表,那个【挽救】的按钮永远是灰白的)、ApexSQLRecover(功能很强大,但是试用版撤销事务后每个表只能恢复100条记录,正版价格在1W以上)、还有极佳数据恢复等软件,这些软件都是要花钱的。总之是没有找回来
今天我意外看到尾部日志的恢复方法,前提是要有一次完整备份,哪怕是十年前的也可以,我努力回忆,想起来在新系统测试阶段,我似乎有过一次完整备份,那次是担心切换新系统后数据列的格式不对,用来做参照的,于是赶紧打开服务器,果然有一次10月份的完整备份,虽然里面的某些字段不同,但是应该是没有问题的,逼近完整备份之后,没有重装过SQL2005,它的事务日志应该是完整的,于是拷贝出10月份的完整备份文件拿到自己的电脑上尝试恢复。按照下面的方法最终成功恢复了12.04号的数据,真的是太棒了。
转帖地址:
原文出处: 问题:经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题。
遇到这种情况,一般都是没有做备份,不然也不会来发问了。首先要冷静,否则会有更大的灾难。直到你放弃。
解决方法:对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了。但是唯一遗憾的是,不支持2008及更高版本,这时除了其他第三方工具,那么最常用的就是本文提到的方法——日志尾部备份。本文实验环境2008R2,对于2008及其以上版本可以使用这个方法,其实2005也可以,2000很少用,没试过,只是2008之前可以使用Log Exploer,所以就没必要用这种方法。
下面图文并茂讲解操作方法,至于原理,不属于本文范围,而且我相信真遇到误操作的时候,估计没人会看原理了。
步骤:(1)、检查数据库的恢复模式,如图:
或者使用脚本检查:
SELECT recovery_model,recovery_model_desc FROM sys.databases WHERE name =\'AdventureWorks\'