【问题标题】:How to recover a dropped table in sql server after a full backup taken进行完整备份后如何在 sql server 中恢复已删除的表
【发布时间】:2019-06-09 11:31:24
【问题描述】:

我必须从在 SQL Server 2016 标准版上运行的 SQL Server 数据库中恢复删除的表。数据库处于完全恢复模式。

删除表后,我进行了完整的数据库备份,然后进行了两次事务日志备份。现在我可以使用或不使用昂贵的第三方工具来恢复删除的表吗?

我试过这个link 并在最后一个命令中出错。

STOPBEFOREMARK 查询的结果:

为数据库“databasecopy”、文件 1 上的文件“databasefilename”处理了 2104752 个页面。 为数据库“datebasecopy”处理了 6 页,文件 1 上的文件“database_log”。 RESTORE DATABASE 在 123.259 秒(133.405 MB/秒)内成功处理了 2104758 个页面。 消息 4335,第 16 级,状态 2,第 15 行 指定的 STOPAT 时间过早。全部或部分数据库已经前滚超过该点。 消息 3013,第 16 级,状态 1,第 15 行 RESTORE LOG 异常终止。 RESTORE DATABASE 在 0.544 秒(0.000 MB/秒)内成功处理了 0 个页面。

当我点击原始数据库的恢复选项并点击时间线选项时,我会看到下面的屏幕

从 fun_dblog 中删除表的时间:

【问题讨论】:

  • 您必须在删除表之前恢复备份。您还忘记了包含您遇到的错误以及您使用的产生该错误的命令。
  • 如果您也有事务日志,则恢复完整备份(从删除之前),并使用事务日志恢复到您之前的时间点之前丢了桌子。您可能希望在您的沙盒服务器上进行一些测试恢复,如果该表的负载量很大,则尝试尽可能接近它被删除的时间。显然,如果您恢复到表不存在的时间点,那么您已经走得太远了,但是如果您在沙盒服务器上,您可以根据需要多次恢复到不同的时间,而不会中断任何东西(进一步)。
  • 请注意,在 之后 DROP 的完整备份在这里是没有用的。您需要一份来自之前 的数据库副本。如果您在创建DROP 之后只有完整数据库备份的副本,那么表就消失了,除了使用源代码控制中的定义再次创建表之外,您几乎无能为力。但是,该表中的任何数据很可能会丢失,除非有人亲自记住其内容。
  • 所以为了清楚起见,您在删除表后进行的备份是您第一次进行完整备份吗?我只是要求我们可以找到一个起点来帮助你,而不是批评。如果是这种情况,那么我会询问该表最初是如何构建的,以及您是否可以追溯这些步骤。
  • 如果没有在某个时间点先进行完整备份,您就无法在删除后备份日志

标签: sql-server data-recovery drop-table


【解决方案1】:

好的,为了避免长时间讨论这个问题,我的建议是:

  1. 恢复您 4 个月前进行的完整备份,而不是您今天进行的备份:

    RESTORE DATABASE [databasecopy] FROM DISK = N'OLD_BACKUP.bak' WITH MOVE N'database' TO N'C:\SQLskills\database2.mdf', MOVE N'database_log' TO N'C:\SQLskills\database2_log .ldf',替换,NORECOVERY;去吧

  2. 然后运行 ​​RESTORE 直到该 LSN:

    从磁盘恢复日志 [databasecopy] = N'D:\SQLskills\database_Log2.bak' WITH STOPBEFOREMARK = 'lsn:3420000002597000001', NORECOVERY; 走 RESTORE DATABASE [databasecopy] WITH RECOVERY;去吧

如果您使用当前的完全备份,它将不起作用,因为此时日志中的所有内容都已提交,并且您正试图及时返回。恢复只会及时进行。这就是你的错误的原因。

【讨论】:

  • 请检查我用截图更新了问题。确认你的回答是否会帮助我。
  • 如果我错了,请纠正我,您正在尝试使用当前备份,我告诉您使用旧备份。
  • 是的。我正在尝试使用当前备份。是否可以撤消删除后进行的备份(完整备份和日志备份)?检查我恢复到上面的屏幕截图。是否可以回到 15:00 时的数据库状态?
  • 我给你的答案是使用你的旧备份。你可以试试,也可以不试试。撤消任何事情的唯一方法是恢复旧副本,我想这就是整个问题的重点。
  • 按照您在回答中所说的操作,我可以取回整个表格数据吗?从 4 个月到昨天。
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 2022-08-14
  • 2023-03-30
  • 1970-01-01
  • 2013-03-28
相关资源
最近更新 更多