【发布时间】:2014-02-11 21:02:38
【问题描述】:
我有一个数据库的.MDF 备份。我需要来自 .MDF 的一些信息。
当我尝试附加此 .MDF 时,它需要随附的日志文件。
我不需要日志文件,但它坚持.LDF 文件。
我试图将它指向它附带的同一个日志文件,但我收到了错误:
(因为当前版本的数据库正在使用它。)
我无法将它附加到其他服务器,因为它最初位于 SQL Server 2012 上,而那是我唯一的 SQL Server 2012 服务器。
如何在没有.LDF 的情况下重新附加.MDF?
我正在添加一个文本版本,以防其他人正在寻找此问题的解决方案:
消息 5120,第 16 级,状态 101,第 1 行
无法打开物理文件“D:\SQL Logs....Custom_log.ldf”。操作系统错误 32:“32(该进程无法访问该文件,因为它正被另一个进程使用。)”。
文件激活失败。物理文件名“D:\SQL Logs....Custom_log.ldf”可能不正确。
无法重建日志,因为数据库关闭时有打开的事务/用户,数据库没有发生检查点,或者数据库是只读的。如果由于硬件或环境故障而手动删除或丢失事务日志文件,则可能会发生此错误。消息 1813,第 16 级,状态 2,第 1 行
无法打开新数据库“TestDb”。 CREATE DATABASE 已中止。
我不知道这是否相关,但如果我不需要,我实际上不需要附加.MDF 文件。我只需要从那里读取一张表。
【问题讨论】:
-
我已经在这里尝试了所有 3 个建议:blog.sqlauthority.com/2010/04/26/…
-
您似乎没有正确分离它,因此文件状态不一致,您无法重新附加它。 MDF 文件不是备份。如果需要备份,请运行备份命令。您能解释一下“由于当前版本的数据库正在使用它”是什么意思吗?你的意思是你试图附加一个 MDF 文件和一个 LDF 已经存在同名并且正在使用中?如果是这种情况,为什么不尝试重命名 MDF 并附加它,这样它就不会尝试创建同名的 LDF?
-
@ElectricLlama 我有一个数据库,并且我有一个旧的 MDF 数据库。我正试图从旧的 MDF 中抢一张桌子。这有意义吗?
-
文件
D:\SQL Logs\....Custom_log.ldf在您尝试附加MDF之前是否已经存在于SQL Server上? -
您肯定需要将 MDF 附加到数据库服务器才能取出表,所以让我们专注于附加 MDF 而不出错。
标签: sql sql-server tsql