【发布时间】: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