SQL Server 2008 误删除数据的恢复

时间:2022-04-01 22:14:14


    前言

    在平时大家用到SQL Server的时候很多,也经常会对其进行各种操作,简单的数据查询或添加还没什么问题,顶多就是添加错误直接删除就可以了,但如果你操作的是重要的数据库,而且库中有着重要的数据,更甚至你还进行了update、delete操作,那该怎么办呢?

    小编犯的错误也是不可饶恕的,一句忘记加where条件的update一执行,把一千多条重要数据作废了,小编还真是吓了个不轻,还好花费了些时间补救了。只是通过各路搜寻,小编没有找到update后的恢复办法,却找到一个delete的,这也是很宝贵的,宝贵的东西最好的办法就是记录下来~~~


    解决方案

     SQL Server中误删除数据的恢复需要有两个前提条件:

      1. 至少有一个误删除之前的数据库完全备份。

      2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

    那么问题来了,如何查看数据库的恢复模式呢?


     查看或更改数据库恢复模式

     1.连接到相应的 SQL Server 数据库引擎实例之后,展开“数据库”;

     2.右键单击所要进行操作的数据库,再选择“属性”,打开“数据库属性”对话框;

     3.在“选择页”窗格中,单击“选项”;

     4.当前恢复模式显示在“恢复模式”列表框中;

     5.在列表中就可以选择不同的模式来更改恢复模式啦~~~

     在这里:

SQL Server 2008 误删除数据的恢复



    详述

    继续说如何解决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操作

    用Recovery for SQL Server进行恢复的操作步骤:

    1.运行Recovery for SQL Server

SQL Server 2008 误删除数据的恢复


    2.点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)

SQL Server 2008 误删除数据的恢复


    3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。

SQL Server 2008 误删除数据的恢复


    4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。

SQL Server 2008 误删除数据的恢复


    5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。

SQL Server 2008 误删除数据的恢复


    6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。

SQL Server 2008 误删除数据的恢复


    7. Next,选择被恢复数据存放的目标数据库。

SQL Server 2008 误删除数据的恢复


    8. Next, 选择 Import availiable data from both database and log files

SQL Server 2008 误删除数据的恢复


    9. Next, Next, 然后就完成数据的恢复!

SQL Server 2008 误删除数据的恢复


    只是这个方案还是有些瑕疵的,通过搜索,这个方案确实是可以恢复数据的,只是恢复之后的数据变成了DEMO型,还需要大家手动稍作修改。

    由于本方案是针对SQL Server 2008来解决的,小编的SQL Swrver为2012版本,所以以上过程小编没有实战,还期待大家谁有机会尝试了告知小编哦!


    总结

    通过这次小编着实是长记性了,数据库一定要多做备份,常做备份;而且还是不要轻易拿含有重要数据的库来进行操作,有个测试库最好了。大家也就吸取小编的经验教训,认真对待数据库,数据无价,容不得失误!

    所以,做为程序员,做数据调试的时候,必须要先备份数据库!