我们使用的是 SQL 2005 Express Edition。我们想从 LDF 文件中读取数据以恢复一些已删除的记录。
我们尝试使用 ApexSQL 的试用版,它对我们有很大帮助。我们没有使用第三方软件,而是试图弄清楚如何自己读取日志文件。
我们如何从 LDF 文件中读取和恢复数据?
我们使用的是 SQL 2005 Express Edition。我们想从 LDF 文件中读取数据以恢复一些已删除的记录。
我们尝试使用 ApexSQL 的试用版,它对我们有很大帮助。我们没有使用第三方软件,而是试图弄清楚如何自己读取日志文件。
我们如何从 LDF 文件中读取和恢复数据?
您将需要以前的完整备份以及自上次完整备份以来进行的任何日志备份
1)取日志备份的尾部
2) 查找已删除记录的事务(操作将是 LOP_DELETE_ROWS 用于 DELETE 和 LOP_SET_BITS & LOP_MODIFY_ROW 用于 TRUNCATE TABLE)
3) 将以前的完整备份和日志备份以及尾部还原到新数据库 WITH NORECOVERY 和 STOPAT='Just Before Begin Time for Transaction'
这篇博文更详细地介绍了使用 fn_dblog 查找 STOPAT 的时间。这篇博文尝试直接从日志中恢复数据,但与时间点恢复相比,这可能非常耗时。
Robert L Davis 的这篇博文也有一个关于结合 STOP 和 STANDBY 的示例,以允许您查询不同时间点的数据库状态。