【问题标题】:SQL Server LOG Data recoverySQL Server LOG 数据恢复
【发布时间】:2010-11-25 05:11:13
【问题描述】:

我想知道如何从日志文件中恢复数据。 我正在使用 sql 2005(完整备份)。

问题是服务昨晚清除了我的数据(它不应该清除)。 现在我想恢复之前删除的那些行。

谁能告诉我该怎么做?

【问题讨论】:

    标签: sql-server backup recovery logfiles


    【解决方案1】:

    只要您在删除之前备份了数据库,然后备份了自上次数据库备份以来所做的所有事务日志备份,那么您就可以恢复到某个时间点。

    首先要做的是备份事务日志。

    然后您将上次数据库备份和所有事务日志备份恢复到删除之前的时间点。

    请参阅MSDN Article 了解如何操作。

    我建议您将现有数据库保持原样并将备份恢复到新数据库。然后您可以编写一些脚本将所需的数据传输回您的实时数据库。

    【讨论】:

      【解决方案2】:

      首先,您的数据库必须处于完整恢复模式,并且您必须拥有完整的事务日志备份链 - 一系列日志记录具有完整的日志序列号 (LSN) 序列

      日志备份链在进行完整数据库备份或恢复模式从 SIMPLE 切换到 FULL 并进行完整备份时启动。之后,会定期创建事务日志备份。日志备份链的中断只有两种方式:

      • 覆盖备份集
      • 从 FULL 切换到 SIMPLE 或 BULK LOGGED 恢复模型

      中断日志备份链会导致丢失事务信息

      您可以使用以下方法恢复到某个时间点:

      • SQL Server Management Studio,如 Robin 提供的链接中所示
      • 使用 T-SQL 和 STOPAT 选项

      语法

      RESTORE LOG database_name 
      FROM <backup_device> 
      WITH STOPAT = time, RECOVERY… 
      
      • 使用第三方工具,例如 ApexSQL Log,它不仅可以恢复到特定时间点,还可以选择性地仅回滚您选择的事务

      您可以在此处找到所有列出的选项的步骤:Restore a database to a point in time

      免责声明:我作为支持工程师在 ApexSQL 工作

      【讨论】:

        【解决方案3】:

        只有在以下情况下才能恢复您的数据: 1)数据库采用全恢复模式; 2)您在意外删除之前进行了完整备份; 3) 您还没有恢复或再次备份此数据库。

        如果这是正确的,您应该: 1)做事务日志备份; 2) WITH NORECOVERY 选项从完全备份恢复数据库; 3) 使用 STOPAT 选项恢复事务日志。

        【讨论】:

          【解决方案4】:

          要将事务日志文件恢复到某个时间点,您的数据库必须在完全恢复模式下运行。所以首先你必须恢复最新的完整数据库备份:

          RESTORE DATABASE *database* FROM DISK = 'D:/Full.bak' WITH NORECOVERY, REPLACE
          

          下一步是恢复上次的差异数据库备份:

          RESTORE DATABASE *database* FROM DISK = 'D:/Diff.bak' WITH NORECOVERY
          

          然后以正确的顺序恢复自上次差异备份以来所做的所有事务日志备份

          RESTORE LOG *database* FROM DISK = 'D:/log1.bak' WITH NORECOVERY
          RESTORE LOG *database* FROM DISK = 'D:/log2.bak' WITH NORECOVERY
          RESTORE LOG *database* FROM DISK = 'D:/log3.bak' WITH NORECOVER
          

          最后一个必须恢复的事务日志备份是使用stopat 选项发生故障后所做的事务日志备份。在stopat 选项之后,您应该设置要恢复数据库的时间。

          RESTORE LOG *database* FROM DISK = 'D:/log4.bak' WITH STOPAT = '2015-11-26 16:22:40.000', RECOVERY
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-12-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多