• 记一次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
  • 相关阅读:
    防删没什么意思啊,直接写废你~
    绝大多数情况下,没有解决不了的问题,只有因为平时缺少练习而惧怕问题的复杂度,畏惧的心理让我们选择避让,采取并不那么好的方案去解决问题
    Java 模拟面试题
    Crossthread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on
    一步步从数据库备份恢复SharePoint Portal Server 2003
    【转】理解 JavaScript 闭包
    Just For Fun
    The database schema is too old to perform this operation in this SharePoint cluster. Please upgrade the database and...
    Hello World!
    使用filter筛选刚体碰撞
  • 原文地址:https://www.cnblogs.com/flowwind/p/3613375.html
Copyright © 2020-2023  润新知