在平时大家用到SQL Server的时候很多,也经常会对其进行各种操作,简单的数据查询或添加还没什么问题,顶多就是添加错误直接删除就可以了,但如果你操作的是重要的数据库,而且库中有着重要的数据,更甚至你还进行了update、delete操作,那该怎么办呢?
小编犯的错误也是不可饶恕的,一句忘记加where条件的update一执行,把一千多条重要数据作废了,小编还真是吓了个不轻,还好花费了些时间补救了。只是通过各路搜寻,小编没有找到update后的恢复办法,却找到一个delete的,这也是很宝贵的,宝贵的东西最好的办法就是记录下来~~~
SQL Server中误删除数据的恢复需要有两个前提条件:
1. 至少有一个误删除之前的数据库完全备份。
2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。
那么问题来了,如何查看数据库的恢复模式呢?
1.连接到相应的 SQL Server 数据库引擎实例之后,展开“数据库”;
2.右键单击所要进行操作的数据库,再选择“属性”,打开“数据库属性”对话框;
3.在“选择页”窗格中,单击“选项”;
4.当前恢复模式显示在“恢复模式”列表框中;
5.在列表中就可以选择不同的模式来更改恢复模式啦~~~
在这里:
继续说如何解决delete的问题。针对前面所说的两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,那就好说啦!
这个就很简单了,直接把现在已经错误的数据库删掉,将之前备份好的数据库还原即可,省时省力。
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,那就真的是无法恢复了。
所以,一定要将数据库恢复模式设置为“完整(Full)”。
根据搜索的情况看,第三方工具有多种,比如:Log Explorer for SQL Server、SQL Log Rescue 、SysTools SQL Recovery 、Recovery for SQL Server ;但前两种不支持SQL Server 2008;第三种支持,但需要购买,Demo版没有数据恢复功能;而Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。
用Recovery for SQL Server进行恢复的操作步骤:
1.运行Recovery for SQL Server
2.点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)
3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。
7. Next,选择被恢复数据存放的目标数据库。
8. Next, 选择 Import availiable data from both database and log files
9. Next, Next, 然后就完成数据的恢复!
只是这个方案还是有些瑕疵的,通过搜索,这个方案确实是可以恢复数据的,只是恢复之后的数据变成了DEMO型,还需要大家手动稍作修改。
由于本方案是针对SQL Server 2008来解决的,小编的SQL Swrver为2012版本,所以以上过程小编没有实战,还期待大家谁有机会尝试了告知小编哦!
通过这次小编着实是长记性了,数据库一定要多做备份,常做备份;而且还是不要轻易拿含有重要数据的库来进行操作,有个测试库最好了。大家也就吸取小编的经验教训,认真对待数据库,数据无价,容不得失误!
所以,做为程序员,做数据调试的时候,必须要先备份数据库!