zoukankan      html  css  js  c++  java
  • 一个误删除前的数据库的完整备份进行还原

            昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要找回数据。

            生产机环境是server2008 R2、 sqlserver2012,使用delete语句删除的表现在开始还原,还原可参考dudu的这篇文章(链接),其中使用Recovery for SQL Server工具还原,发现还原的数据字段值为demo,所以最后还是用sql命令去还原的,用sql命令,微软官方给的比较明细(链接)。

    一、还原需要的条件设置

            使用命令,是通过sqlserver的事务日志以及一个误删除前的数据库的完整备份进行还原,所以在sqlserver2012的维护计划向导中,要建立完整备份,差异备份和事务日志,具体如下image

    以及在数据库属性,选项设置中,设置为完整备份,具体如下图

    image

    做好如上两个设置,数据库误删后找回数据就会非常轻松,现在说一下如何还原sqlserver数据到故障点。

    二、还原命令

    还原主要分为四步走:

    1、出现故障后,首先执行备份事务日志命令,这里以AdventureWorks作为数据库名。命令如下:

    1
    2
    BACKUP LOG AdventureWorks TO DISK = 'C:SQLServerBackupsAdventureWorks_transcationlog.bak' 
       WITH NORECOVERY;

    2、从完整备份还原数据

    RESTORE  DATABASE [QASupervision] FROM DISK='M:DatabaseOAAdventureWorks_Fullbackup_2014_03_18_010002_0155764.bak' 
    WITH  NORECOVERY, REPLACE 

    3、从差异备份还原数据

    RESTORE DATABASE [QASupervision] FROM DISK='M:DatabaseOAAdventureWorks_diffbackup_2014_03_18_020002_0155764.bak' WITH NORECOVERY, REPLACE 

    4、从事务日志还原数据,还原到某个时间点之前

    1
    2
    3
    4
    DECLARE @dt datetime  
    SELECT @dt=DATEADD(HOUR,-16,GETDATE())  
    select @dt
    RESTORE LOG [QASupervision] FROM DISK='C:SQLServerBackupsAdventureWorks_transcationlog.bak'  WITH  <a href="mailto:STOPAT=@dt,RECOVERY">STOPAT=@dt,RECOVERY</a>

    5、还原数据库,如果数据库提示正在还原中,则执行此命令即可。

    1
    RESTORE DATABASE AdventureWorks WITH RECOVERY
  • 相关阅读:
    数组小练习
    数组
    利用数组进行排序
    继承练习
    黄金分割点
    百万富翁-循环练习
    SelectedIndexChanged事件, SelectedValueChanged事件和SelectionChangeCommitted事件的区别及应用——c#
    进制转换以及与字符串之间转换——c#
    文件中的类都不能进行设计,因此未能为该文件显示设计器
    winfrom自绘窗体边框——c#
  • 原文地址:https://www.cnblogs.com/zhangwen/p/3613745.html
Copyright © 2011-2022 走看看