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

Sql server 在SQL Server中恢复已删除的记录,sql-server,sql-server-2005,database-backups,database-restore,Sql Server,Sql Server 2005,Database Backups,Database Restore,我无意中删除了表中的一行,并希望将其还原。我在这里找到了一个解决方案: 我已尝试从删除后的备份还原数据库。但我无法使用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

我无意中删除了表中的一行,并希望将其还原。我在这里找到了一个解决方案:

我已尝试从删除后的备份还原数据库。但我无法使用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.
摘自—

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

在这种情况下,最好的解决方案可能是使用不同的数据库名称恢复数据库,然后只将所需的数据移动到现有数据库中?不确定这是否正是你想要实现的

我已尝试从恢复数据库 删除后进行的备份

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

  • 删除之前进行的最新完整备份
  • 从上次完全备份到删除后的第一次日志备份之间执行的所有日志备份
  • 数据库必须处于完全恢复模式
您可以使用差异备份来减少日志备份链的长度,但这是可选的


只有当以上所有条件都满足时,您才可以继续执行该过程。如果您缺少上述任何一项,则该记录将丢失。根据经验,不要关注博客文章或论坛答案,包括这篇,而是关注产品文档:

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

此外,您还可以尝试查看这些帖子以了解更多详细信息:


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

无论如何,在某些情况下,即使您的数据库未使用完全恢复模式,删除的数据也不会丢失。有关更多信息,请查看在线文章


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

我正在尝试还原表行。备份是在删除后创建的。您好,您是否继续执行此链接中的所有说明?首先进行尾日志备份?在删除行之前,是否有其他备份?此数据库的恢复模式是什么?数据库托管在共享主机上。我没有直接访问备份的权限。我有以前的备份,但它不包含丢失的数据。我想备份模式已经满了。所以更好更简单的方法是让我的客户重新输入相同的数据:)