使新版本的 LDF 文件与旧版本的 MDF 文件一起使用

Mik*_*son 7 sql-server

是否可以将 LDF 文件的“新版本”与旧版本的 MDF 文件结合起来,并将更改记录在 LDF 中?让我们假设在此期间没有日志备份,因为我猜这会让这真的不可能。

脚步:

  1. 数据库处于完全恢复模式
  2. 进行完整备份
  3. 做一些改变
  4. 分离数据库
  5. 制作 LDF 文件的文件副本
  6. 从第 2 步中的完整备份还原
  7. 分离数据库
  8. 制作 MDF 文件的文件副本
  9. 扔掉备份(重要的一步)
  10. 删除数据库
  11. 不知何故,使 MDF 和 LDF 一起发挥作用,同时步骤 3 中所做的更改仍然存在。

只是附加 MDF 和 LDF 会出现错误:

传递给日志扫描数据库“mic”的日志扫描编号 (38:195:41) 无效。

我也尝试了一系列

  1. 创建数据库
  2. 使数据库脱机
  3. 替换 MDF 和 LDF 文件
  4. 上线
  5. 做一个日志备份
  6. 删除数据库
  7. 仅使用附加 MDF 文件创建数据库
  8. 进行完整备份
  9. 还原完整备份(norecovery)
  10. 从步骤 5 恢复日志备份

我有一个生动的记忆,这在一段时间内工作得很好,但后来就不行了。

此备份集中的日志终止于 LSN 38000000021300001,这对于应用于数据库还为时过早。可以还原包含 LSN 39000000006500001 的更新日志备份。

小智 3

是否可以将 LDF 文件的“较新版本”与 MDF 文件的较旧版本结合起来,并将更改记录在 LDF 中?

假设您希望数据库在事务上保持一致,则不行。

仅附加 MDF 和 LDF 会出现错误

在这种情况下,这是因为日志号无效,无论出于何种原因给定数据库文件的元数据。这是您所描述的确切过程的症状。在这种情况下,最好使用 来create database重新生成日志(或 DBCC 命令),因为无论哪种方式,数据库都不会保持一致,这与您概述的上述步骤已经不一致。一个是六个,另一个是六打。