zoukankan      html  css  js  c++  java
  • SQLServer 2008 误删除恢复

    SQLServer的查询分析器和企业管理器给了我们很大便利,使用起来很方便,真要感谢微软。但是在操作的过程中,也很容易出现问题,少写一个Where语句,就会带来灾难,几年或者几十年的经营数据如果被误删除,而且无法恢复的话,老板非K死你不可,即便每天备份,但如果只能恢复到昨天的数据,那也是无法接受的,因此必须要能恢复到误删除前的那个时间点的数据,幸好,SQLServer 的 日志恢复提供了这种可行性。

    进行日志恢复的先决条件

    1)有一个库备份文件 (aaa.bak)

    2)有日志备份文件  (aaa.log)

    3)在库备份文件时间-日志备份文件时间间隔内,日志未被截断过

    一定要注意以上的几个先决条件,很多朋友连日常备份都没有,那就完蛋了,也有很多朋友日志截断做得很勤,那也完蛋了。

    有了以上的两个条件,就可以用一下SQL命令进行恢复

    1、restore database 数据库名 from disk='d:\aaa.BAK' with norecovery

    2、restore log 数据库名 from disk='d:\aaa.log' with stopat='2008-1-29 17:56:00'

    stopat 是你想恢复的时间点。

    =================================================================

    假设误操作的数据库名为 yddata

    1、备份误操作后的数据库的日志:

       backup log yddata to disk='d:\db_log.bak'

    2、恢复之前做的完全备份,假设该完全备份的文件名为 d:\db_old.bak

       restore database yddata_2 from disk='d:\db_old.bak' with norecovery

       注意:恢复成的数据库名为 yddata_2,不要覆盖正在使用的库

    3、最后一步:

       restore log yddata_2 from disk='d:\db_log.bak'
            with stopat='2007-04-14 12:30:00'

       stopat 代表要将数据库恢复到哪一时刻的状态


    其实原理很简单:相当于在之前的备份的基础上将备份之后的操作重新做了一遍。

    A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600.bak' with init

    B:2004/10/14,13:00对数据库进行了update,delete等操作;

    C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。

    现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。

    要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:

    --备分日志:

    BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT

    --恢复数据库1600.bak,使用WITH NORECOVERY参数:

    RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY

    --使用日志恢复数据库到10月15日17:59分:

    RESTORE LOG test
            FROM disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'

    上面的三条Transact SQL语句的对应过程:

          1.恢复数据库到A点;

          2.执行A-B之间的log记录,把数据库恢复到B点.

           这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto

  • 相关阅读:
    linux ubuntu 中文汉化
    微信内核浏览器一些用法
    struts2解耦和获取提交的值
    html背景图片自适应
    Heroku 云服务部署流程
    mac 遇到的奇怪问题?
    h5完美实现无刷新上传并附带上传效果
    ionic 实现 应用内(webview中html页面点击) 和 应用外 (浏览器html页面点击) 打开本地安装应用
    ionic 实现微信朋友圈分享的完整开发流程
    OpenGL ES学习笔记(三)——纹理
  • 原文地址:https://www.cnblogs.com/Fooo/p/2176641.html
Copyright © 2011-2022 走看看