在SQL Server中恢复已删除的记录

3

我不小心删除了表格中的一行并希望恢复它。我在这里找到了一个解决方案:如何从MS SQL服务器中恢复已删除的记录

我尝试从删除后备份的数据中恢复数据库。但我无法使用STOPAT选项还原数据库:

RESTORE LOG database FROM  DISK = N'X:\database.BAK' WITH
STOPAT = N'2011-02-12T00:00:00', RECOVERY

我有以下错误:
Msg 3117, Level 16, State 4, Line 1
The log or differential backup cannot be restored because no files are
ready to rollforward.
Msg 3013, Level 16, State 1, Line 1
RESTORE LOG is terminating abnormally.

你好,您是否按照此链接中的所有指示进行了操作?首先进行尾部日志备份了吗?在删除行之前,您是否还有其他备份?这个数据库的恢复模式是什么? - rsc
数据库托管在共享主机上。我没有直接访问备份的权限。我有以前的备份,但它不包含丢失的数据。我猜测备份模式已满。 - HasanG
4个回答

8

我尝试从删除后的备份中恢复数据库。

你不能从删除后的备份中恢复已删除的记录。你需要:

  • 在删除前最新的完整备份
  • 从上一个完整备份到第一个删除后的日志备份之间所有的日志备份
  • 数据库必须处于完整恢复模式

为了缩短日志备份链长度,您可能会使用差异备份,但这是可选的。

只有满足以上所有条件,才可以继续执行该过程。如果您缺少任何一个条件,则该记录将丢失。作为经验法则,请勿遵循博客文章或论坛答案(包括此答案),请改为遵循产品文档:如何:还原到特定时间点(Transact-SQL)


1
更好、更简单的方法是要求我的客户重新输入相同的数据 :) - HasanG

3

2

这段文字摘自这个链接-

差异备份只包含自上次完整数据库备份以来更改的数据页,但只能与类似于使用日志备份的完整备份一起还原。您无法仅恢复单个表或对象,但可以在数据库、文件组、文件和页面级别进行恢复。您还可以从任何备份中恢复到特定时间点(假设您已经恢复了所需的前面的完整备份、差异备份和日志备份)。

在这种情况下,可能对您最好的解决方案是使用不同的数据库名称还原数据库,然后仅将您想要的数据移动到现有数据库中?不确定是否正是您想要实现的。


我正在尝试恢复一行表格。备份是在删除后创建的。 - HasanG

1
是的,可以使用各种方法从SQL Server数据库中恢复已删除的记录,而这需要不同的前提条件。其中一些涉及本地SQL Server功能,而其他则涉及第三方工具。
无论如何,在某些情况下,即使您的数据库没有使用完全恢复模型,删除的数据也不会丢失。有关更多信息,请查看从备份或在线数据库文件中恢复已删除的SQL数据在线文章。
免责声明:我在ApexSQL担任产品支持工程师。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接