恢复SQL Server中已删除的记录

时间:2011-02-14 13:30:38

标签: sql-server sql-server-2005 database-backups database-restore

我不小心删除了表中的一行并希望将其还原。我在这里找到了一个解决方案:How to recover deleted records in MS SQL server

我尝试从删除后备份中恢复数据库。但我无法使用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.

4 个答案:

答案 0 :(得分:8)

  

我试过从中恢复数据库   删除后进行备份。

您无法从强删除后备份中恢复已删除的记录。你需要:

  • 删除之前的最新完整备份
  • 在上次完整备份之间进行的所有日志备份,直到第一次日志备份在删除后执行
  • 数据库必须处于完全恢复模式

您可能会抛出差异备份以减少日志备份链长度,但这是可选的。

只有当所有满足上述条件时,您才可以继续执行此操作。如果您缺少上述的任何,则该记录将丢失。根据经验,不要关注博客文章或论坛答案,包括这一篇,请关注产品文档:How to: Restore to a Point in Time (Transact-SQL)

答案 1 :(得分:3)

如果您的数据库处于完全恢复模式,那么您可以尝试使用商业工具(如ApexSQL Log)或sql server命令(如DBCC LOG或fn_log)读取事务日志并从中恢复数据。

您也可以尝试查看这些帖子以获取更多详细信息:

How to undo a delete operation in SQL Server 2005?

How to view transaction logs in SQL Server 2008

答案 2 :(得分:2)

取自this link -

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

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

答案 3 :(得分:1)

是的,可以使用各种方法从SQL Server数据库中恢复已删除的记录,另一方面,这些方法需要不同的先决条件。其中一些涉及本机SQL Server功能,另一些涉及第三方工具。

无论如何,在某些情况下,即使您的数据库没有使用完全恢复模型,删除的数据也不会丢失。有关详细信息,请查看Recover deleted SQL data from a backup or from online database files在线文章。

免责声明:我在ApexSQL担任产品支持工程师