zoukankan      html  css  js  c++  java
  • 记一次SQLServer数据库误删数据找回

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

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

    一、还原需要的条件设置

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

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

    image

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

    二、还原命令

    还原主要分为四步走:

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

    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、从事务日志还原数据,还原到某个时间点之前

    DECLARE @dt datetime   
    SELECT @dt=DATEADD(HOUR,-16,GETDATE())   
    select @dt
    RESTORE LOG [QASupervision] FROM DISK='C:SQLServerBackupsAdventureWorks_transcationlog.bak'  WITH  STOPAT=@dt,RECOVERY

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

    RESTORE DATABASE AdventureWorks WITH RECOVERY
  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/flowwind/p/3613375.html
Copyright © 2011-2022 走看看