1

我想知道如何从日志文件中恢复数据。我正在使用 sql 2005(完整备份)。

问题是服务昨晚清除了我的数据(它不应该有)。现在我想恢复之前删除的那些行。

谁能告诉我我该怎么做?

4

4 回答 4

3

只要您在删除之前备份了数据库,然后备份了自上次数据库备份以来所做的所有事务日志备份,那么您就可以恢复到某个时间点。

首先要做的是备份事务日志。

然后,您将上次数据库备份和所有事务日志备份恢复到删除之前的时间点。

请参阅这篇MSDN 文章了解如何操作。

我建议您将现有数据库保持原样并将备份恢复到新数据库。然后,您可以编写一些脚本将所需的数据传输回您的实时数据库。

于 2009-09-03T08:14:22.890 回答
2

首先,您的数据库必须处于完全恢复模式,并且您必须拥有完整的事务日志备份链——一系列日志记录具有完整的日志序列号 (LSN) 序列

当进行完整数据库备份或恢复模式从 SIMPLE 切换到 FULL 并进行完整备份时,将启动日志备份链。之后,会定期创建事务日志备份。日志备份链只能通过两种方式中断:

  • 覆盖备份集
  • 从 FULL 切换到 SIMPLE 或 BULK LOGGED 恢复模式

中断日志备份链可能导致丢失事务信息

您可以使用以下命令恢复到某个时间点:

  • SQL Server Management Studio,如 Robin 提供的链接所示
  • 使用 T-SQL 和 STOPAT 选项

句法

RESTORE LOG database_name 
FROM <backup_device> 
WITH STOPAT = time, RECOVERY… 
  • 使用第三方工具,例如 ApexSQL Log,它不仅可以恢复到特定时间点,还可以选择性地仅回滚您选择的事务

您可以在此处找到所有列出的选项的步骤:将数据库还原到某个时间点

免责声明:我作为支持工程师在 ApexSQL 工作

于 2014-03-21T20:37:04.900 回答
1

只有在以下情况下才能恢复您的数据: 1)数据库使用完全恢复模式;2)您在意外删除之前进行了完整备份;3) 你还没有恢复或备份这个数据库。

如果正确,您应该: 1) 进行事务日志备份;2) 从完整备份中恢复数据库 WITH NORECOVERY 选项;3) 使用 STOPAT 选项恢复事务日志。

于 2009-09-03T08:25:54.643 回答
0

要将事务日志文件恢复到某个时间点,您的数据库必须在完全恢复模式下运行。所以首先你必须恢复最新的完整数据库备份:

RESTORE DATABASE *database* FROM DISK = 'D:/Full.bak' WITH NORECOVERY, REPLACE

下一步是恢复上次的差异数据库备份:

RESTORE DATABASE *database* FROM DISK = 'D:/Diff.bak' WITH NORECOVERY

然后以正确的顺序恢复自上次差异备份以来所做的所有事务日志备份

RESTORE LOG *database* FROM DISK = 'D:/log1.bak' WITH NORECOVERY
RESTORE LOG *database* FROM DISK = 'D:/log2.bak' WITH NORECOVERY
RESTORE LOG *database* FROM DISK = 'D:/log3.bak' WITH NORECOVER

最后一个必须恢复的事务日志备份是使用stopat选项发生故障后所做的事务日志备份。选项后stopat,您应该设置要恢复数据库的时间。

RESTORE LOG *database* FROM DISK = 'D:/log4.bak' WITH STOPAT = '2015-11-26 16:22:40.000', RECOVERY
于 2015-11-27T08:50:32.290 回答